奇怪的sql存储过程问题
--你可以建立如下的测试环境,如果看不出来我的问题的所在 
 create   database   test_p 
 go 
 create   table   t 
 ( 
 	tId   int, 
 	tName   varchar(50) 
 ) 
 go 
 insert   t   values( '1 ', 'a ')    
 insert   t   values( '2 ', 'b ') 
 insert   t   values( '3 ', '1 ') 
 go 
 select   *   from   t 
 use   test_p 
 go 
 create   procedure   P_test 
 ( 
 	@txtfield   varchar(50) 
 ) 
 as 
 begin 
 	exec( 'select   tId   from   t   where   tName= '+@txtfield+ ' ') 
 end 
 --为什么我运行下面的会出错呢?提示:“列名    'a '   无效。” 
 exec   p_test    'a ' 
 --再运行下面的,又提示:“在将   varchar   值    'a '   转换成数据类型   int   时失败。” 
 exec   p_test    '1 '     
 上面的错误是为什么?!       'a '又为什么要转成int型?
------解决方案--------------------create database test_p 
 go 
 create table t 
 ( 
 tId int, 
 tName varchar(50) 
 ) 
 go 
 insert t values( '1 ', 'a ')  
 insert t values( '2 ', 'b ') 
 insert t values( '3 ', '1 ') 
 go 
 select * from t 
 use test_p 
 go 
 create procedure P_test 
 ( 
 @txtfield varchar(50) 
 ) 
 as 
 begin 
 exec( 'select tId from t where tName= ' ' '+@txtfield+ ' ' ' ') --修改這裡 
 end 
 GO 
 exec p_test  'a ' 
 exec p_test  '1 '
------解决方案--------------------exec( 'select tId from t where tName= ' ' '+@txtfield+ ' ' ' ')--兩個單引號代表一個 '