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
精彩评论