我有一个包含许多参数的存储过程。
我想插入(或者选择)像这样:
INSERT INTO @TEMP_TABLE
EXECUTE STORED_PROCEDURE
没有定义@TEMP_TABLE
。
答案 0 :(得分:21)
例如:
declare @temptable2 as table
(
DatabaseName nvarchar(128),
dbsize nvarchar(128),
owner varchar(128),
dbid nvarchar(128),
created nvarchar(128),
status nvarchar(128),
compatibility_level nvarchar(128)
)
INSERT INTO @temptable2
EXEC ('sp_helpdb')
答案 1 :(得分:5)
您不能使用@tablevariable
。
the link posted by Joe中的解决方法使用SELECT ... INTO
。
表变量当前不支持这种情况(并且不会来自对this connect item的响应)因为表变量的模式需要在编译时知道。
答案 2 :(得分:5)
实现这一目标的唯一方法是使用SELECT INTO
#temp表的一个棘手的解决方法,这将比它的价值更麻烦。
只需使用所需的列对表变量进行编码。然后在两个存储过程中添加一个非常明显的,位置很好的注释,提醒编码器这个依赖关系,然后继续进行其他工作。
答案 3 :(得分:1)
Via: 1.1 Chrome-Compression-Proxy
答案 4 :(得分:0)
这个@skorpk的回答实际上对我提出的问题就像问题的正确答案一样。实际上,您可以插入表变量,因为问题似乎表明。此外,您还可以使用存储过程来执行此操作 期待参数。请参阅以下示例代码:
这个答案实际上对我提出了问题的正确答案。实际上,您可以插入表变量,因为问题似乎表明。此外,您还可以使用存储过程来执行此操作 期待参数。请参阅以下示例代码:
/*Create stored procedure for this example. */
/*It will simulate results and we can clean it up */
/*later in this example */
create proc sproc_get_friends (@context_user_id int)
as
select @context_user_id as id, 'me' as name
union all select 1234678910 as id, 'Jane Doe' as name
union all select 1112131415 as id, 'John Doe' as name
go
/*Create temp variable*/
declare @tmp as table ( friend_user_id int, friend_name nvarchar(100) )
/*Insert into temp variable from stored procedure*/
INSERT INTO @tmp exec ('sproc_get_friends 10000')
/*Show data in temp variable*/
select * from @tmp
go
---Clean up
drop proc sproc_get_friends
go
答案 5 :(得分:-5)
你有什么问题? @TEMP_TABLE是表类型。它不需要架构