我想将其放入临时表而不创建一个
declare @table2 table(ID int, Name varchar(300))
insert @table2
EXEC dbo.dinoalltime_get
错误:插入exec语句不能嵌套
这是程序给出的表格:
我希望@ table2能够在程序中找到什么。所以我可以很容易地说: 从@ table2中选择*或选择一个必要的列。
答案 0 :(得分:0)
你可以试试这个:
declare @table2 table(ID int, Name varchar(300))
insert into @table2
SELECT * FROM OPENROWSET ('SQLOLEDB','Server=(local);TRUSTED_CONNECTION=YES;','set fmtonly off EXEC dbo.dinoalltime_get')
答案 1 :(得分:0)
存储过程dbo.dinoalltime_get也有insert-exec语句,因此无法嵌套。在当前存储过程或用户表值函数中编写代码,而不是dbo.dinoalltime_get。
答案 2 :(得分:0)
您可以使用OPENROWSET
函数从存储过程中检索数据,如下所示:
--replace ServerName and DatabaseName
SELECT *
INTO #Table2
FROM OPENROWSET('SQLNCLI', 'Server=localhost;Trusted_Connection=yes;',
'EXEC SERVERNAME.DATABASENAME.dbo.dinoalltime_get')
-- Select Table
SELECT *
FROM #Table2;
您可以使用此查询来查找您的提供程序(例如SQLNCLI)和servername:
select * from sys.servers
由Pinal Dave提供