首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

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

2012-04-20 
请教一个存储过程参数处理问题有一个存储过程,代码如下SQL codeCREATE procedure [dbo].[BBB] @spid varch

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

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+')') 

热点排行