读书人

请问一个存储过程参数处理有关问题

发布时间: 2012-04-20 15:27:03 作者: rapoo

请教一个存储过程参数处理问题
有一个存储过程,代码如下

SQL code
CREATE procedure [dbo].[BBB] @spid varchar(8000)asselect * from BI_SPZL where spid in(@spid)


当传递一个参数'''SP000000193'',''SP000000202'''时,
exec BBB '''SP000000193'',''SP000000202'''
查询未能得出结果,但是执行下面这条语句,可以得出结果
select * from BI_SPZL where spid in('SP000000193','SP000000202')

请问怎么处理参数,才能让存储过程返回正确的结果集?

[解决办法]
CREATE procedure [dbo].[BBB]
@spid varchar(8000)
as
declare @sql varchar(8000)
set @sql = 'select * from BI_SPZL where spid in('+@spid+')'
exec(@sql)
[解决办法]
SQL code
CREATE PROCEDURE [dbo].[BBB] @spid VARCHAR(8000)AS     DECLARE @sql VARCHAR(8000)    SET @sql = 'select * from BI_SPZL where spid in(' + @spid + ')'    EXEC ( @sql  )
[解决办法]
你这样传递参数,相当于让字符串SP000000193与字符串'SP000000193'或字符串'SP000000202'去比,
两者当然不相等
改成下面这样
SQL code
CREATE procedure [dbo].[BBB] @spid varchar(8000)asexec('select * from BI_SPZL where spid in('+@spid+')') 

读书人网 >SQL Server

热点推荐