variable uso tipo temporales tablas tabla las indice guardan donde dinamica crear sql-server tsql schema temp-tables table-variable

sql server - uso - ¿Definir TSQL tabla temporal(o variable de tabla) sin definir esquema?



uso de tablas temporales sql server (3)

¿Hay una manera de definir una tabla temporal sin definir su esquema por adelantado?


En realidad, usar una tabla VARIABLE, una tabla en memoria, es la mejor manera de hacerlo. La #table crea una tabla en la base de datos temporal, y la tabla ## es global, ambas con aciertos de disco. Considere la desaceleración / golpe experimentado con el número de transacciones.

CREATE PROCEDURE [dbo].[GetAccounts] @AccountID BIGINT, @Result INT OUT, @ErrorMessage VARCHAR(255) OUT AS BEGIN 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, AccountName FROM Accounts WHERE ... 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

Tenga en cuenta la forma en que inserta en esta tabla temporal.

La desventaja de esto es que puede tardar un poco más en escribir, ya que tiene que definir su variable de tabla.

También recomendaría el indicador de SQL para el Analizador de consultas de RedGate.


Sí, puedes crearlo con

SELECT INTO ...

Digamos

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


no necesitas OPENQUERY. Simplemente coloque "INTO #AnyTableName" entre la lista de selección y el DE de cualquier consulta ...

SELECT * INTO #Temp1 FROM table1 WHERE x=y