【发布时间】:2014-08-05 06:32:07
【问题描述】:
declare @us table(name nvarchar(100),lastname nvarchar(100),UID bigint,available bit);
declare
@Name nvarchar(100),
@lastname nvarchar(100),
@UID bigint,
@Avail bit
insert into @us
select @name=name,@lastname=lastname,@UID=UID,@Avail=available from Users where available='1'
select * from @us
我收到了这个错误
INSERT 语句不能包含 SELECT 语句 变量的值。
我搜索了这个问题,但很多人使用这样的查询,他们说没有问题!我正在使用 sql server 2012,这是 MSSQL2012 和 MSSQL2008 之间的区别吗?如果我想从存储过程中返回一个表,最好的解决方案是什么?我的查询有什么问题?
【问题讨论】:
-
为什么不先赋值给变量,然后用变量插入呢?另外,是否保证
select查询只返回 1 行? -
如果
Users中不止一行的available等于1,您希望这样做吗? -
@shree.pat18 ,是的,这是我的另一个问题,有时结果不止一行!我该怎么办?
-
为什么你需要这些变量?从这个 sn-p 的代码中我看不到它们的用途。
-
嗯,我们不能两者互相询问在特定场景中的预期行为是什么。我在问你期望在这种情况下会发生什么。我不知道“解决方案”是什么,因为您没有告诉我您的期望。
标签: sql sql-server stored-procedures sql-server-2012 sql-insert