"Must declare variable",但是当我声明它时,"variable already declared"
"Must declare variable", but when I declare it, "variable already declared"
我正在生成插入 SQL,其中 returns 是调用方的主键。 SQL 是为任意 table 生成的,所以我不能使用 SCOPE_IDENTITY(),因为并非每个 table 都使用身份。
当我执行查询时,MS SQL 抱怨输出变量未声明,但在我声明时说它已经声明。该死的如果我这样做,如果我不这样做该死。
var parameters = new DynamicParameters();
parameters.Add("d", direction:ParameterDirection.Output, size:8000);
// (Add the input params a, b, c)
remoteConnection.Execute(sql, parameters);
SQL:
-- Error: Must declare the table variable "@d"
INSERT INTO Blacklist
(DatabaseConnectionId,TableSchema,TableName)
OUTPUT INSERTED.Id INTO @d
VALUES (@a,@b,@c)
我声明变量:
DECLARE @d int
INSERT INTO Blacklist
(DatabaseConnectionId,TableSchema,TableName)
OUTPUT INSERTED.Id INTO @d
VALUES (@a,@b,@c)
-- Error: The variable name '@d' has already been declared. Variable names must be unique within a query batch or stored procedure.
我该怎么做?
您需要将 @d
声明为 TABLE
变量:
DECLARE @d TABLE
(
id INT
);
INSERT INTO Blacklist
(DatabaseConnectionId,TableSchema,TableName)
OUTPUT INSERTED.Id INTO @d
VALUES (@a,@b,@c)
我正在生成插入 SQL,其中 returns 是调用方的主键。 SQL 是为任意 table 生成的,所以我不能使用 SCOPE_IDENTITY(),因为并非每个 table 都使用身份。 当我执行查询时,MS SQL 抱怨输出变量未声明,但在我声明时说它已经声明。该死的如果我这样做,如果我不这样做该死。
var parameters = new DynamicParameters();
parameters.Add("d", direction:ParameterDirection.Output, size:8000);
// (Add the input params a, b, c)
remoteConnection.Execute(sql, parameters);
SQL:
-- Error: Must declare the table variable "@d"
INSERT INTO Blacklist
(DatabaseConnectionId,TableSchema,TableName)
OUTPUT INSERTED.Id INTO @d
VALUES (@a,@b,@c)
我声明变量:
DECLARE @d int
INSERT INTO Blacklist
(DatabaseConnectionId,TableSchema,TableName)
OUTPUT INSERTED.Id INTO @d
VALUES (@a,@b,@c)
-- Error: The variable name '@d' has already been declared. Variable names must be unique within a query batch or stored procedure.
我该怎么做?
您需要将 @d
声明为 TABLE
变量:
DECLARE @d TABLE
(
id INT
);
INSERT INTO Blacklist
(DatabaseConnectionId,TableSchema,TableName)
OUTPUT INSERTED.Id INTO @d
VALUES (@a,@b,@c)