我在存储过程中有以下的代码:
...
IF EXISTS (SELECT * FROM DEVICETOFILIALE WHERE CODE = @FILIALECODE)
SELECT @MODULEID = SMSDEVICEID FROM DEVICETOFILIALE WHERE CODE = @FILIALECODE
SELECT CASE @MOBILETYPE
WHEN 'YD' THEN 'AND SIMCARDTYPE = 1'
WHEN 'LT' THEN 'AND SIMCARDTYPE = 2'
END SELECT
ELSE
SELECT @MODULEID = ''
...
目的是判断一下@MOBILETYPE,根据他的值不同在查询语句中加上不同的查询条件,上面这段代码应该怎么写?
...
IF EXISTS (SELECT * FROM DEVICETOFILIALE WHERE CODE = @FILIALECODE)
SELECT @MODULEID = SMSDEVICEID FROM DEVICETOFILIALE WHERE CODE = @FILIALECODE
SELECT CASE @MOBILETYPE
WHEN 'YD' THEN 'AND SIMCARDTYPE = 1'
WHEN 'LT' THEN 'AND SIMCARDTYPE = 2'
END SELECT
ELSE
SELECT @MODULEID = ''
...
目的是判断一下@MOBILETYPE,根据他的值不同在查询语句中加上不同的查询条件,上面这段代码应该怎么写?
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 = ' '
比如:
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)
不过有一点不太清楚:
EXEC SP_EXECUTESQL @SQL,N'@MODULEID VARCHAR(20) OUT',@MODULEID OUT
这句的两个参数N'@MODULEID VARCHAR(20) OUT',@MODULEID OUT是什么意思?