Ver Mensaje Individual
  #11 (permalink)  
Antiguo 18/06/2003, 06:30
OXIGENO
 
Fecha de Ingreso: febrero-2002
Mensajes: 442
Antigüedad: 22 años, 9 meses
Puntos: 2
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
__________________
tech-nico.com

Última edición por OXIGENO; 18/06/2003 a las 06:30