TSQL Define Temp Table (or table variable) Without Defining Schema? TSQL Define Temp Table (or table variable) Without Defining Schema? sql-server sql-server

TSQL Define Temp Table (or table variable) Without Defining Schema?


Actually using a table VARIABLE, an in-memory table, is the optimal way to go. The #table creates a table in temp db, and ##table is global - both with disk hits. Consider the slow-down/hit experienced with the number of transactions.

CREATE PROCEDURE [dbo].[GetAccounts]     @AccountID BIGINT,    @Result INT OUT,    @ErrorMessage VARCHAR(255) OUTASBEGIN    SET NOCOUNT ON;    SET @Result = 0    SET @ErrorMessage = ''    DECLARE @tmp_Accounts TABLE (                                                AccountId BIGINT,AccountName VARCHAR(50),...)INSERT INTO @tmp_Accounts ([AccountId], [AccountName]...)SELECT AccountID, AccountNameFROM AccountsWHERE  ...    IF @@Rowcount = 0        BEGIN            SET @ErrorMessage = 'No accounts found.'            SET @Result = 0            RETURN @Result        END    ELSE        BEGIN            SET @Result = 1            SELECT *            FROM @tmp_Accounts        END 

Note the way you insert into this temp table.

The down-side of this is that it may take a bit longer to write, as you have to define your table variable.

I'd also recommend SQL Prompt for Query Analyzer by RedGate.


you don't need OPENQUERY. Just put "INTO #AnyTableName" between the select list and the FROM of any query...

SELECT *    INTO #Temp1    FROM table1    WHERE x=y


Yes, you can create it with

SELECT INTO ...

Let's say

SELECT * INTO #tFROM OPENQUERY( 'server','exec database.dbo.proc_name value1, value2, ... ' )