Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

insertar en tablas creadas

Estas en el tema de insertar en tablas creadas en el foro de SQL Server en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 29/05/2008, 07:27
 
Fecha de Ingreso: mayo-2008
Ubicación: Peru
Mensajes: 2
Antigüedad: 16 años
Puntos: 0
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...
  #2 (permalink)  
Antiguo 29/05/2008, 12:34
Avatar de RootK
Moderador
 
Fecha de Ingreso: febrero-2002
Ubicación: México D.F
Mensajes: 8.004
Antigüedad: 22 años, 2 meses
Puntos: 50
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
__________________
Nadie roba nada ya que en la vida todo se paga . . .

Exentrit - Soluciones SharePoint & Net
  #3 (permalink)  
Antiguo 29/05/2008, 13:00
 
Fecha de Ingreso: mayo-2008
Mensajes: 7
Antigüedad: 16 años
Puntos: 0
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
  #4 (permalink)  
Antiguo 29/05/2008, 13:19
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
De acuerdo 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
Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:39.