[英]INSERT statement cannot contain a SELECT statement -sql server2012
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的一种尊重吗? 如果要从存储过程中返回表,什么是最佳解决方案? 我的查询有什么问题?
根据问题中提供的信息,变量似乎是不必要的。 您可以像这样直接执行INSERT...SELECT
:
declare @us table(name nvarchar(100),lastname nvarchar(100),UID bigint,available bit);
insert into @us
select name,lastname,UID,available
from Users
where available='1'
select * from @us
下面是完成另一项任务的另一种复杂方法。 希望没人喜欢这个。 我只是向我们展示了我们还有另一种替代方法。
declare @us table(name nvarchar(100),lastname nvarchar(100),UID bigint,available bit);
declare @Name nvarchar(100), @lastname nvarchar(100), @UID bigint,@Avail bit
DECLARE ALLRECORDS CURSOR FOR
SELECT name,lastname,UID,available from Users where available='1'
OPEN ALLRECORDS
FETCH NEXT FROM ALLRECORDS INTO @Name,@lastname,@UID,@Avail
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO @us
SELECT @Name,@lastname,@UID,@Avail
FETCH NEXT FROM ALLRECORDS INTO @Name,@lastname,@UID,@Avail
END
CLOSE ALLRECORDS
DEALLOCATE ALLRECORDS
SELECT * FROM @us
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.