无法将简单表从过程插入到声明的表中

时间:2015-05-27 19:18:31

标签: sql sql-server stored-procedures declaration

我想将其放入临时表而不创建一个

        declare @table2 table(ID int, Name varchar(300))
        insert @table2
        EXEC dbo.dinoalltime_get

错误:插入exec语句不能嵌套

这是程序给出的表格: enter image description here

我希望@ table2能够在程序中找到什么。所以我可以很容易地说:         从@ table2中选择*或选择一个必要的列。

3 个答案:

答案 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提供