在 SQL Server 中,有没有办法在不知道表定义的情况下声明表变量?
示例:
DECLARE @Results TABLE
INSERT INTO @Results EXEC MyProc @param1 = @myValue
或者
DECLARE @Results TABLE
SELECT INTO @Results EXEC MyProc @param1 = @myValue
或者
DECLARE @Results TABLE
EXEC MyProc @param1 = @myValue INTO @Results
或者
DECLARE @Results TABLE
EXEC INTO @Results MyProc @param1 = @myValue
或者
DECLARE @Results TABLE
SELECT * FROM EXEC MyProc @param1 = @myValue INTO @Results
或者
DECLARE @Results TABLE
SELECT * INTO @Results FROM EXEC MyProc @param1 = @myValue
或者
DECLARE @Results TABLE
SELECT * INTO @Results EXEC MyProc @param1 = @myValue
(你明白了)
最佳答案
不可能的。引自“在线书籍”:
==============
句法
注意 使用 DECLARE @local_variable 声明表类型的变量。
table_type_definition ::=
TABLE ( { column_definition | table_constraint } [ ,...n ] )
==============
"(", 至少一个列定义和 ")"在语法上是必需的。
PS:AFAIK 从“exec”结果插入任何新表是不可能的。仅适用于具有预定义结构的表。
关于stored-procedures - 声明一个没有列定义的表变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4146074/