这是我试过的并且出错了
Msg 137,Level 15,State 1,Line 1
必须声明标量变量" @ MAXCount"
代码:
:invalid {
box-shadow: none;
}
:-moz-submit-invalid {
box-shadow: none;
}
:-moz-ui-invalid {
box-shadow:none;
}
答案 0 :(得分:0)
您必须将变量作为OUTPUT
参数传递:
DECLARE @TempTable NVARCHAR(MAX) = 'Test_'+ '1'; -- CONVERT(VARCHAR(10),@@SPID)
DECLARE @MAXCount VARCHAR(10);
DECLARE @MINCount VARCHAR(10);
DECLARE @SQLSelect NVARCHAR(MAX);
SET @SQLSelect = 'SELECT @MAXCount = MAX(RowID), @MINCount = MIN(RowID) FROM dbo.'
+@TempTable+' (NOLOCK)';
EXEC dbo.SP_EXECUTESQL @SQLSelect
,N'@MAXCount VARCHAR(10) OUTPUT, @MinCount VARCHAR(10) OUTPUT'
,@MAXCount OUTPUT
,@MINCount OUTPUT;
SELECT @MAXCount, @MINCount;
的 LiveDemo
强>
注意:
SPID
创建表格看起来很糟糕。相关:SELECT * FROM sales + @yymm
SYSNAME
数据类型,您可以添加QUOTENAME
以防止SQL注入的其他保护REPLACE
NOLOCK
可能导致无意义的读取。 类似的东西:
DECLARE @MAXCount VARCHAR(10)
,@MINCount VARCHAR(10);
DECLARE @SQLSelect NVARCHAR(MAX) =
N'SELECT @MAXCount = MAX(RowID), @MINCount = MIN(RowID)
FROM <table_name> WITH (NOLOCK)';
DECLARE @TempTable SYSNAME = QUOTENAME('Test_'+ '1'); -- CONVERT(VARCHAR(10),@@SPID)
SET @SQLSelect = REPLACE(@SQLSelect, '<table_name>', @TempTable);
EXEC dbo.SP_EXECUTESQL @SQLSelect
,N'@MAXCount VARCHAR(10) OUTPUT, @MinCount VARCHAR(10) OUTPUT'
,@MAXCount OUTPUT
,@MINCount OUTPUT;
SELECT @MAXCount, @MINCount;