我有一个传递给存储过程的表。现在我想在openrow中使用' select * into #b将临时表#b中的存储过程结果插入。我的sql代码如下:
create type add1 as table
(score int)
alter proc qwe123
@table add1 readonly
as
begin
select score,score + 2 as cal
from @table
end
go
declare @t add1
insert into @t
select score
from abc
select * into #b from
openrowset('sqlncli','server=localhost;trusted_connection=yes','exec qwe123 @t')
有人可以告诉我为什么我会收到错误:
OLE DB提供程序" SQLNCLI10"对于链接服务器"(null)"返回消息"延期准备无法完成。"。
Msg 8180,Level 16,State 1,Line 1
无法准备声明。
Msg 137,Level 15,State 2,Line 1
必须声明标量变量" @ t"。
答案 0 :(得分:1)
您必须使用执行语句声明变量@t
:
openrowset('sqlncli','server=localhost;trusted_connection=yes',
'DECLARE @t add1 = 1 exec qwe123 @t')