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