我生成插入SQL,它将主键返回给调用者。 SQL是为任意表生成的,因此我无法使用SCOPE_IDENTITY(),因为并非每个表都使用标识。 当我执行我的查询时,MS SQL会抱怨输出var没有声明,但是当我声明它时它已经声明了。如果我这样做该死的,如果我不这该死的话。该死的。
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.
我该怎么做?
答案 0 :(得分:1)
您需要将@d
声明为TABLE
变量:
DECLARE @d TABLE
(
id INT
);
INSERT INTO Blacklist
(DatabaseConnectionId,TableSchema,TableName)
OUTPUT INSERTED.Id INTO @d
VALUES (@a,@b,@c)