日期:2014-05-18 浏览次数:20517 次
IF EXISTS (SELECT * FROM DEVICETOFILIALE WHERE CODE = @FILIALECODE) BEGIN DECLARE @SQL NVARCHAR(4000) SET @SQL=N'SELECT @MODULEID = SMSDEVICEID FROM DEVICETOFILIALE WHERE CODE = '''+RTRIM(@FILIALECODE)+'''' +(CASE @MOBILETYPE WHEN 'YD' THEN N'AND SIMCARDTYPE = 1 ' WHEN 'LT' THEN N'AND SIMCARDTYPE = 2 ' END) EXEC SP_EXECUTESQL @SQL,N'@MODULEID VARCHAR(20) OUT',@MODULEID OUT END ELSE SELECT @MODULEID = ' '
------解决方案--------------------
既然是在存储过程中。干脆就用if来判断好了
比如:
declare @sql varchar(8000)
set @sql='IF EXISTS (SELECT * FROM DEVICETOFILIALE WHERE CODE = @FILIALECODE)
SELECT @MODULEID = SMSDEVICEID FROM DEVICETOFILIALE WHERE CODE = @FILIALECODE'
if(@MOBILETYPE="YD")
begin
set @sql+=' AND SIMCARDTYPE = 1 '
end
else if(MOBILETYPE="LT")
begin
set @sql+=' AND SIMCARDTYPE = 2 '
end
exec(@sql)
------解决方案--------------------
2楼有心了,,@MODULEID OUT是输出参数,SQL语句执行的结果就放在@MODULEID中,不然你怎么得到结果