开发者

Declare a table variable without column definitions?

开发者 https://www.devze.com 2023-01-24 15:33 出处:网络
Is there a way, in SQL Server, to declare a table variable without knowing the table definitions? Exem开发者_JAVA百科pli gratia:

Is there a way, in SQL Server, to declare a table variable without knowing the table definitions?

Exem开发者_JAVA百科pli gratia:

DECLARE @Results TABLE
INSERT INTO @Results EXEC MyProc @param1 = @myValue

or

DECLARE @Results TABLE
SELECT INTO @Results EXEC MyProc @param1 = @myValue

or

DECLARE @Results TABLE
EXEC MyProc @param1 = @myValue INTO @Results

or

DECLARE @Results TABLE
EXEC INTO @Results MyProc @param1 = @myValue

or

DECLARE @Results TABLE
SELECT * FROM EXEC MyProc @param1 = @myValue INTO @Results

or

DECLARE @Results TABLE
SELECT * INTO @Results FROM EXEC MyProc @param1 = @myValue

or

DECLARE @Results TABLE
SELECT * INTO @Results EXEC MyProc @param1 = @myValue

(you get the idea)


Impossible. Citation from "books online":

==============

Syntax Note Use DECLARE @local_variable to declare variables of type table.

table_type_definition ::= 
  TABLE ( { column_definition | table_constraint } [ ,...n ] ) 

==============

"(", at least one column definition and ")" is syntactically required.

PS: AFAIK insertion into any new table from "exec" results are impossible at all. Only to a table with predefined structre.


You can't do it with table VARIABLES but you can do it with TEMP tables.

-- Drop the table, if it exists
IF OBJECT_ID(N'tempdb.dbo.#tmpMyTable',N'U') IS NOT NULL
DROP TABLE #tmpMyTable


SELECT
  ColumnA,
  ColumnB

INTO #tmpMyTable

FROM MyTable

-- Then clean up after yourself
DROP TABLE #tmpMyTable
0

精彩评论

暂无评论...
验证码 换一张
取 消