Jorge aca te dejo el sp para que veas si puedes darme una mano...
Código:
--Declaro Datos que vienen de ASP
DECLARE @Fechach VARCHAR,
@Numeroch CHAR,
@Expte VARCHAR(8),
@Decreto VARCHAR(8),
@Coddecr VARCHAR(8),
@Codestab VARCHAR(8),
@Importe VARCHAR(8),
@Partida VARCHAR(8),
@Jurisdicc VARCHAR(8),
@Mes VARCHAR(8),
@Anio VARCHAR(8),
@Estado VARCHAR(8),
@Institu CHAR,
@TempTable CHAR(30)
----------------------------------------------------------------------------
---vamos a simular los datos que vienen de ASP
SELECT @Fechach = '12/12/02'
SELECT @Numeroch = 'SS'
SELECT @Expte = 1
SELECT @Decreto = 1
SELECT @Coddecr = 1
SELECT @Codestab = 2
SELECT @Importe = 1
SELECT @Partida = 1
SELECT @Jurisdicc = 1
SELECT @Mes = 1
SELECT @Anio = 1
SELECT @Estado = 1
SELECT @Institu = 'x'
SELECT @TempTable = 'temp_PEREZ'
SET NOCOUNT ON
DECLARE @STATUS CHAR(200)
DECLARE @cComando AS NVARCHAR(1000)
-- SI NO EXISTE EL CODIGO DE JURISDICCION DEL FORM
IF EXISTS(SELECT * FROM LOCALIDA WHERE CODIGOCIUD = @Codestab AND CODIGOCIUD IS NOT NULL) BEGIN
IF @TempTable IS NOT NULL BEGIN
--SI EXISTE VERIFICO QUE NO ESTE VACIA
IF EXISTS(SELECT * FROM sysobjects WHERE NAME = @TempTable) BEGIN
--SI EXISTE PERO TIENE REGISTROS VACIOS LOS BORRO
SELECT @cComando = 'IF EXISTS (SELECT COUNT(*), FECHACH FROM ' + @TempTable +
' WHERE FECHACH IS NULL GROUP BY FECHACH) BEGIN
DELETE FROM '+@TempTable +
' END'
EXEC sp_sqlexec @cComando
--SI EL COD YA NO ESTA EN LA TEMPORAL LO INSERTO
SELECT @cComando = 'IF NOT EXISTS (SELECT * FROM ' + @TempTable + ' WHERE CODESTAB =' + @Codestab+ ') BEGIN
INSERT INTO '+@TempTable+' (Fechach,Numeroch,Expte,Decreto,Coddecr,Codestab,Importe,Partida,Jurisdicc,Mes,Anio,Estado,Institu) VALUES('+ CAST(@Fechach AS CHAR)+','+CAST(@Numeroch AS CHAR)+','+@Expte+','+@Decreto+','+@Coddecr+','+@Codestab+','+@Importe+','+@Partida+','+@Jurisdicc+','+@Mes+','+@Anio+','+@Estado+','+@Institu+')
SELECT * FROM '+@TempTable+
' END
ELSE BEGIN
SELECT * FROM '+@TempTable+
' END'
EXEC sp_sqlexec @cComando
END
ELSE BEGIN
--SI NO EXISTE LA CREO
SELECT @cComando ='Create Table '+@TempTable+' (Fechach DATETIME, Numeroch CHAR(10),Expte NUMERIC(9),Decreto NUMERIC(9),Coddecr NUMERIC(9) ,Codestab NUMERIC(9),Importe NUMERIC(9),Partida NUMERIC(9),Jurisdicc NUMERIC(9),Mes NUMERIC(9),Anio NUMERIC(9),Estado NUMERIC(9),Institu CHAR(1))'
EXEC sp_sqlexec @cComando
SELECT @cComando = 'INSERT INTO '+@TempTable+' (Fechach,Numeroch,Expte,Decreto,Coddecr,Codestab,Importe,Partida,Jurisdicc,Mes,Anio,Estado,Institu) VALUES('+@Fechach+','+@Numeroch+','+@Expte+','+@Decreto+','+@Coddecr+','+@Codestab+','+@Importe+','+@Partida+','+@Jurisdicc+','+@Mes+','+@Anio+','+@Estado+','+@Institu+')
SELECT * FROM '+@TempTable
EXEC sp_sqlexec @cComando
END
END
ELSE BEGIN
SELECT @STATUS = 'EL NOMBRE DE LA TABLA ES NULO.-'
SELECT @STATUS
END
END
ELSE BEGIN
SELECT @STATUS = 'NO EXISTE CODESTABL.-'
SELECT @STATUS
END
GO
El error que me tal cual esta el codigo es este:
Código:
Server: Msg 128, Level 15, State 1, Line 1
The name 'S' is not permitted in this context. Only constants, expressions, or variables allowed here. Column names are not permitted.
Aclaro: veras que en el insert he probado convertir los datos con CAST pero igual no funciono.
Sigo probando...
el problema esta simplemente en el uso del SP sp_sqlexec,
ya que comprobe que quitando este y reemplazando
las variables por valores reales anda perfecto...
Aca esta el drama:
Código:
DECLARE @Fechach DATETIME,@Numeroch char(50),@Expte VARCHAR(8),@Decreto VARCHAR(8),@Coddecr VARCHAR(8),@Codestab VARCHAR(8),@Importe VARCHAR(8),@Partida VARCHAR(8),@Jurisdicc VARCHAR(8),@Mes VARCHAR(8),@Anio VARCHAR(8),@Estado VARCHAR(8),@Institu CHAR,@TempTable CHAR(30)
SELECT @Fechach = '12/12/02'
SELECT @Numeroch = 'L'
SELECT @Expte = 1
SELECT @Decreto = 1
SELECT @Coddecr = 1
SELECT @Codestab = 2
SELECT @Importe = 1
SELECT @Partida = 1
SELECT @Jurisdicc = 1
SELECT @Mes = 1
SELECT @Anio = 1
SELECT @Estado = 1
SELECT @Institu = 'x'
select @TempTable = 'temp_PEREZ'
DECLARE @cComando NVARCHAR(1000)
SELECT @cComando = 'INSERT INTO '+ @TempTable+ '(Fechach,Numeroch,Expte,Decreto,Coddecr,Codestab,Importe,Partida,Jurisdicc,Mes,Anio,Estado,Institu) VALUES(''+@Fechach+'',''+@Numeroch+'','+@Expte+','+@Decreto+','+@Coddecr+','+@Codestab+','+@Importe+','+@Partida+','+@Jurisdicc+','+@Mes+','+@Anio+','+@Estado+','+@Institu+')'
EXEC sp_sqlexec @cComando
Última edición por OXIGENO; 18/06/2003 a las 06:30 |