1

我的代码中有一行为变量赋值。

select @startdate = MIN(Stime) from mytable

现在我想在存储过程中实现我的代码并将表名作为参数。所以我把代码改成这样

Set @sql = 'select @startdate = MIN(Stime) from '+@mytable
EXEC (@sql)

我收到一个错误,指出该@startdate变量未定义。有什么解决方法吗?

4

1 回答 1

4

您需要停止使用EXEC()动态 SQL。一个原因是,对于输出参数,您需要能够声明它们——EXEC()处理起来有点困难。但还有更重要的原因。我假设您正在正确地清理或验证 的值@mytable,无论它来自哪里......

DECLARE @startdate DATETIME;

DECLARE @sql NVARCHAR(MAX);
SET @sql = N'SELECT @startdate = MIN(Stime) FROM ' + @mytable;

EXEC sp_executesql @sql, N'@startdate DATETIME OUTPUT', @startdate OUTPUT;

SELECT @startdate;
于 2013-08-12T14:33:01.250 回答