使用带嵌套选择的INSERT语句时遇到问题。查询在SQLManagement Studio中执行时有效,但在代码中执行时会返回错误。
查询如下:
INSERT INTO [Projects]
VALUES ('1', 'None', '2', '2010/09/08 10:36:30 AM', 4, 1, 4, '6', '', 'n/a', 'no', 'n/a', 'None', 0, 'n/a', 'n/a', 'no', 'A3', 'no', 'Blnk', 'aa',
(SELECT status.statusID from status where name = 'STOPPED')
)
返回错误:
Subqueries are not allowed in this context. Only scalar expressions are allowed
是否有解释此问题以及如何解决此问题,因为我不知道状态的ID是什么,除了执行单独的选择查询?
答案 0 :(得分:3)
你可以试试这个......
INSERT INTO [Projects]
SELECT '1', 'None', '2', '2010/09/08 10:36:30 AM', 4, 1, 4, '6', '', 'n/a', 'no', 'n/a', 'None', 0, 'n/a', 'n/a', 'no', 'A3', 'no', 'Blnk', 'aa',
status.statusID from status where name = 'STOPPED'
错误很有意义,因为您可以从子查询中获得多行。在我的建议中,你也可能最终得到多行。过滤器应该有更多吗?
答案 1 :(得分:1)
最好的方法是创建存储过程。
declare @statusID int;
SELECT @statusID=status.statusID from status where name = 'STOPPED'
INSERT INTO [Projects]
VALUES ('1', 'None', '2', '2010/09/08 10:36:30 AM', 4, 1, 4, '6', '', 'n/a', 'no', 'n/a', 'None', 0, 'n/a', 'n/a', 'no', 'A3', 'no', 'Blnk', 'aa',@statusID);