Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   SQL Server (http://www.forosdelweb.com/f87/)
-   -   insertar en tablas creadas (http://www.forosdelweb.com/f87/insertar-tablas-creadas-591433/)

Dixgo 29/05/2008 07:27

Respuesta: Insert Into con variable en SQL server
 
hola gent...una consulta..me gustaria saber xq me sale el error de :
Mens. 137, Nivel 15, Estado 1, Línea 6
Debe declarar la variable escalar "@TABLA1".

mi code:

DECLARE @TABLA1 TABLE(C_Tare INT,
D_MES VARCHAR(20),
N_ESTA VARCHAR(10),
F_PROG DATETIME)

SET @TABLA1 = (SELECT TOP 1
Control.C_Tare,
CASE Periodo.D_Mes
When 1 Then 'ENERO'
When 2 Then 'FEBRERO'
When 3 Then 'MARZO'
When 4 Then 'ABRIL'
When 5 Then 'MAYO'
When 6 Then 'JUNIO'
When 7 Then 'JULIO'
When 8 Then 'AGOSTO'
When 9 Then 'SETIEMBRE'
When 10 Then 'OCTUBRE'
When 11 Then 'NOVIEMBRE'
When 12 Then 'DICIEMBRE'
END + ' ' + (CONVERT(VARCHAR(5),YEAR(Control.D_CierProg))) as D_Mes,
Estado.N_Esta,
ISNULL(CONVERT(char,Control.D_CierProg,103),'-') as D_CierProg
FROM Periodo
INNER JOIN Control ON Periodo.C_Peri = Control.C_Peri
INNER JOIN Estado ON Control.C_Esta = Estado.C_Esta
WHERE Estado.N_Esta = 'CERRADO' OR Estado.N_Esta ='ABIERTO'
ORDER BY D_MES DESC)

DECLARE @TABLA2 TABLE(C_Tare INT,
D_MES2 VARCHAR(20),
N_ESTA2 VARCHAR(10),
F_PROG2 DATETIME)

SET @TABLA2 = (SELECT TOP 1
Control.C_Tare,
CASE Periodo.D_Mes
When 1 Then 'ENERO'
When 2 Then 'FEBRERO'
When 3 Then 'MARZO'
When 4 Then 'ABRIL'
When 5 Then 'MAYO'
When 6 Then 'JUNIO'
When 7 Then 'JULIO'
When 8 Then 'AGOSTO'
When 9 Then 'SETIEMBRE'
When 10 Then 'OCTUBRE'
When 11 Then 'NOVIEMBRE'
When 12 Then 'DICIEMBRE'
END + ' ' + CONVERT(VARCHAR(5),YEAR(D_CIERPROG) )as D_Mes,
Estado.N_Esta,
ISNULL(CONVERT(char,Control.D_CierProg,103),'-') as D_CierProg
FROM Periodo
INNER JOIN Control ON Periodo.C_Peri = Control.C_Peri
INNER JOIN Estado ON Control.C_Esta = Estado.C_Esta
WHERE Estado.N_Esta = 'EN PROCESO'
ORDER BY YEAR(D_CIERPROG) DESC)

SELECT *
FROM @TABLA1 TB1
INNER JOIN @TABLA2 TB2 ON TB1.C_Tare = TB2.C_Tare

me gustaria saber su respuesta...gracias..hablamoz...

RootK 29/05/2008 12:34

Respuesta: Insert Into con variable en SQL server
 
hola y bienvenido Dixgo

Tu pregunta está más enfocada a BD (te recomiendo que las dudas las coloques en el foro correspondiente)

En cuanto a tu problema es la asignación, debería ser mas o menos así para que te funcione


Cita:

DECLARE @TABLA1 TABLE(C_Tare INT,
D_MES VARCHAR(20),
N_ESTA VARCHAR(10),
F_PROG DATETIME)

INSERT INTO @TABLA1
SELECT TOP 1
Control.C_Tare,
CASE Periodo.D_Mes
When 1 Then 'ENERO'
When 2 Then 'FEBRERO'
When 3 Then 'MARZO'
When 4 Then 'ABRIL'
When 5 Then 'MAYO'
When 6 Then 'JUNIO'
When 7 Then 'JULIO'
When 8 Then 'AGOSTO'
When 9 Then 'SETIEMBRE'
When 10 Then 'OCTUBRE'
When 11 Then 'NOVIEMBRE'
When 12 Then 'DICIEMBRE'
END + ' ' + (CONVERT(VARCHAR(5),YEAR(Control.D_CierProg))) as D_Mes,
Estado.N_Esta,
ISNULL(CONVERT(char,Control.D_CierProg,103),'-') as D_CierProg
FROM Periodo
INNER JOIN Control ON Periodo.C_Peri = Control.C_Peri
INNER JOIN Estado ON Control.C_Esta = Estado.C_Esta
WHERE Estado.N_Esta = 'CERRADO' OR Estado.N_Esta ='ABIERTO'
ORDER BY D_MES DESC
Salu2

gemarin 29/05/2008 13:00

Respuesta: insertar en tablas creadas
 
Hola:

Esta es la forma como declaro una tabla:


declare @SociedadPeriodo AS TABLE
(
LlaveNEC varchar(23)
,Periodo char(7)
,Fecha smalldatetime
)



Gema
Colombia

Andres95 29/05/2008 13:19

Respuesta: insertar en tablas creadas
 
El error es porque la estas manejando como si fuera escalar...

aunque es una variable, debes manejarla como si fuera una tabla normal...


la insercion seria entonces del modo:

Código:

Insert into @mivariabletabla (miscampos)
Select micamposselect
From  miotratabla

:arriba: Saludos!


La zona horaria es GMT -6. Ahora son las 20:46.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.