在动态sql里面如何返回动态变量的值?
我遇到的问题是
首先要在一张表里面找到最大的值和最小的值,然后对他们进行比较,然后才能确定接下来要做的事情。
问题就出来获得最大值和最小值的地方。因为表名也是从存储过程外面传进来一个参数,所以打算用动态sql,但是写在字符串里面的变量 @snMix @snMin总是报需要定义,小弟sql server2000初学者,实在找不到解决办法了,请各位大大帮帮忙。
一开始写的
SET @varSQL = "SELECT @snMax=MAX(SequenceNumber) ,@snMin=Min(SequenceNumber) "
+ "FROM " + @varTableName
+ " WHERE DeviceID=" + @nDeviceID + " AND UDCategory=" + @nCategoryID
然后想用两个procedure把最大值和最小值传出来,可还是没办法,下面是返回最小值的存储过程。我不知道该把stnMin这个输出变量放在哪里。
CREATE PROCEDURE dbo.DCP_prDataRecovGetMin
@@ndid INT,
@@nCid INT,
@@sTn NVARCHAR(40),
@@stnMin INT output
AS
DECLARE @strSQL NVARCHAR(400),
@strParam NVARCHAR(200),
@n_did INT,
@n_cid INT
SET @strSQL =N'SELECT MIN(SequenceNumber) as max FROM '
+ @@sTn + N' Where DeviceID=@n_did and UDCategory=@n_cid'
SET @strParam = N'@n_did INT, @n_cid INT'
EXECUTE sp_executeSQL @strSQL, @strParam,
@n_did=@@ndid,
@n_cid=@@nCid
GO