Variable de tabla temporal SQL
Estoy tratando de lograr :
declare @TEMP table (ID int, Name varchar(max))
insert into @temp SELECT ID, Name FROM Table
SELECT * FROM @TEMP
WHERE @TEMP.ID = 1 <--- ERROR AT @TEMP.ID
PERO un error que surge
Debe declarar la variable escalar "@temp".
Alguna ayuda ?
7 answers
Un alias de tabla no puede comenzar con un @
. Por lo tanto, dar @Temp
otro alias (o dejar fuera el nombre de dos partes por completo):
SELECT *
FROM @TEMP t
WHERE t.ID = 1;
También, un solo signo igual se utiliza tradicionalmente en SQL para una comparación.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-08-01 13:24:29
O bien utilizar un Allias en la tabla como T y utilizar T.ID, o use solo el nombre de la columna.
declare @TEMP table (ID int, Name varchar(max))
insert into @temp SELECT ID, Name FROM Table
SELECT * FROM @TEMP
WHERE ID = 1
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-08-01 13:24:08
Si se pone entre corchetes @ se puede utilizar directamente
declare @TEMP table (ID int, Name varchar(max))
insert into @temp values (1,'one'), (2,'two')
SELECT * FROM @TEMP
WHERE [@TEMP].[ID] = 1
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-08-01 14:12:10
Hay otro método de tabla de temp
create table #TempTable (
ID int,
name varchar(max)
)
insert into #TempTable (ID,name)
Select ID,Name
from Table
SELECT *
FROM #TempTable
WHERE ID = 1
Asegúrese de que está seleccionando la base de datos correcta.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-12 06:41:25
Debe usar tablas hash ( # ), que realmente busca porque el valor de las variables permanecerá hasta esa ejecución solamente. por ejemplo -
declare @TEMP table (ID int, Name varchar(max))
insert into @temp SELECT ID, Name FROM Table
Cuando las sentencias above two y below two se ejecutan por separado.
SELECT * FROM @TEMP
WHERE @TEMP.ID = 1
El error se mostrará porque el valor de la variable se pierde cuando ejecuta el lote de consulta por segunda vez. Definitivamente da o / p cuando se ejecuta un bloque entero de código.
La tabla hash es la mejor opción posible para almacenar y recuperar el temporal valor. Dura mucho tiempo hasta que la sesión de padres esté viva.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-21 05:54:20
A diferencia de los parámetros habituales que comienzan con un '@' (por ejemplo, @parameter), las tablas temporales deben comenzar con un # (por ejemplo, #tempTable). Como sugiere GauravSetia, debe declarar su tabla temporal como lo haría con una tabla normal, pero nombrarla con un # en lugar de @ y solo estará disponible en su sesión actual, y se soltará cuando cierre la sesión. También puede tener una tabla temporal global que comienza con un # #(por ejemplo, # # globalTempTable) que se puede usar en sesiones y caídas cuando cierre la sesión en la que se creó, pero aún no he usado uno de estos.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-11 13:45:21
Has declarado @TEMP pero en tu instrucción insert usaste @temp. Nombres de variables sensibles a mayúsculas y minúsculas.
Cambiar @temp a @TEMP
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-18 15:04:57