ya vi cual es tu problema
el problema viene dado, por varias razones.
uno, al hacer Select @cComando='Insert into...'tienes
VALUES('+ CAST(@Fechach AS CHAR)+','+CAST(@Numeroch AS CHAR)+','+@Expte+','+@Decreto+','+@Coddecr+','+@Co
destab+','+@Importe+','+@Partida+','+@Jurisdicc+',
'+@Mes+','+@Anio+','+@Estado+','+@Institu+')
lo cual queda como
Values(01/01/2002,ss,.... etc
y para que funcione debes encerrar entre '' los valores
el problema es que en SQL el ' es para abrir cadena y cerrar, como
metemos una ' dentro de una cadena ?
aca va la solucion
Set Quoted_Identifier off
ponlo al inicio del SP, esto le indica a SQL que el texto que encierres entre " " (comillas dobles) es una cadena, de lo contrario dara error.
asi que a cambiar lo siguiente:
agregar al inico
Set Quoted_Identifier off
define @Fechach
lo tienes como char y por eso solo te toma un caracter
Ponlo Asi:
DECLARE @Fechach CHAR(20)
el primer Select @cComando queda Asi:
SELECT @cComando = "IF NOT EXISTS (SELECT * FROM " + @TempTable + "WHERE CODESTAB ='" + @Codestab+ "') BEGIN "+
"INSERT INTO "+@TempTable+" (Fechach,Numeroch,Expte,Decreto,Coddecr,Codestab,I mporte,Partida,Jurisdicc,Mes,Anio,Estado,Institu) VALUES('"+ CAST(@Fechach AS nvarchar)+"','"+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"
el segundo asi:
SELECT @cComando = "INSERT INTO "+@TempTable+" (Fechach,Numeroch,Expte,Decreto,Coddecr,Codestab,I mporte,Partida,Jurisdicc,Mes,Anio,Estado,Institu) VALUES('"+@Fechach+"','"+@Numeroch+"','"+@Expte+"' ,'"+@Decreto+"','"+@Coddecr+"','"+@Codestab+"','"+ @Importe+"','"+@Partida+"','"+@Jurisdicc+"','"+@Me s+"','"+@Anio+"','"+@Estado+"','"+@Institu+"') SELECT * FROM "+@TempTable
(estos son los del insert, los del create table estan bien)
Saludos.
Última edición por Jorge_Mota; 18/06/2003 a las 11:26 |