日期:2014-05-19  浏览次数:20387 次

存储过程参数问题
有如下存储过程:
create   pruc   aaa
@a   varchar(1000)
as  
select   *   from   表1   where   字段1   in   (@a)

go

在执行exec   aaa   时,想将参数 '001 ', '002 '赋值进去,不知如何操作。。

也就是说,想得到如下select   *   from   表1   where   字段1   in   ( '001 ', '002 ')
查询效果,但一定要用到这个存储过程,不知如何操作?

------解决方案--------------------
create pruc aaa
@a varchar(1000)
as
exec( 'select * from 表1 where 字段1 in ( '+@a+ ') ')
go

exec aaa ' ' '001 ' ', ' '002 ' ' '
------解决方案--------------------
'001 ' '002 ' 加单引号 应该表示是字符型 吧 还是把引号也算进去


------解决方案--------------------
用exec (@sql)执行
------解决方案--------------------
create pruc aaa
@a varchar(1000)
as
exec( 'select * from 表1 where 字段1 in ( '+@a+ ') ')
go

exec aaa ' ' '001 ' ', ' '002 ' ' '
===========================
他的可以
------解决方案--------------------
declare @sql nvarchar(1000)
set @sql= 'print ' ' ' ' ' 'aa ' ' ' ', ' ' ' 'bb ' ' ' ' ' ' '
execute(@sql)

--equals
print ' ' 'aa ' ', ' 'bb ' ' '

自己对照一下就知道在execute的时候需要的 '的个数了