在将列更新到SQL Server数据库时,我在调用GetErrors()后收到错误消息“DataTable ' PK_Column‘not allow nulls”。我不想为PK_Column提供值,因为它是数据库中的自动增量主键列。我的insert语句如下所示:
INSERT INTO [Order] ([Customer_Id], [OrderTime], [OrderType])
VALUES(@Customer_Id, @OrderTime, @OrderType)
SELECT CAST(SCOPE_IDENTITY() AS int) AS '@PK_Column'
它在SQL Server Management Studio中按预期工作,因此查询显然不是问题所在。
我在insert命令上有四个参数,一个输出参数(@PK_Column
)和三个输入参数(@Customer_Id, @OrderTime, @OrderType)
。我发现,如果将@PK_Column
设置为InputOutput参数,则不会出现错误,但是PK_Column
值不会使用数据库创建的正确值进行更新。
发布于 2009-12-14 12:57:43
试一试
SELECT @PK_Column = SCOPE_IDENTITY()
这样,您将赋值给局部变量@PK_Column,该变量将被作为参数提取。
当您执行... AS '@PK_Column'
时,当您想要为本地var/参数@PK_Column
赋值时,您正在创建一个包含一个名为"@PK_Column
“的列的数据集
注意:... AS @PK_Column
将失败,因为这是列别名。您所依赖的设置允许'@PK_Column'
成为有效的别名,而as @PK_Column
将失败
https://stackoverflow.com/questions/1900759
复制