llamar a un procedimiento sobre otro.

04/05/2008 - 17:10 por Dani | Informe spam
Hola a todos, tengo un problema con un procedimiento que llama a otro y le
paso unos parametros. uno de los parametros tiene caracteres como parentesis,
etc... y claro me da un error este es un ejemplo.

SET @Orden = 'sp_AgregarDonacionDet '+ @ClaveDonacion + ', ' + @Contador +
', C, ' + @Caract1
exec (@Orden)

esta es la cadena generada: sp_AgregarDonacionDet 487944, 1, C, Peso (gr)

y este es el error: Sintaxis incorrecta cerca de 'gr'.

Preguntas similare

Leer las respuestas

#1 Leonardo Azpurua
04/05/2008 - 19:40 | Informe spam
"Dani" escribió en el mensaje
news:
Hola a todos, tengo un problema con un procedimiento que llama a otro y le
paso unos parametros. uno de los parametros tiene caracteres como
parentesis,
etc... y claro me da un error este es un ejemplo.

SET @Orden = 'sp_AgregarDonacionDet '+ @ClaveDonacion + ', ' + @Contador
+
', C, ' + @Caract1
exec (@Orden)

esta es la cadena generada: sp_AgregarDonacionDet 487944, 1, C, Peso (gr)

y este es el error: Sintaxis incorrecta cerca de 'gr'.



Hola.

En este caso es mucho mas simple escribir:

EXEC sp_AgregarDonacionDet @ClaveDonacion, @Contador, 'C', @Caract1

(¿qué es C?)

Para hacer lo que quieres (aunque no entiendo por que lo quieres así en éste
caso en particular), debes incluir los apóstrofes que delimitan @Carac1:

SET @Orden = 'sp_AgregarDonacionDet ' +
@ClaveDonacion + ', ' +
@Contador + ', ''C'', ' + '''' + @Caract1 + ''''
EXEC @Orden


Salud!
Respuesta Responder a este mensaje
#2 Dani
04/05/2008 - 22:40 | Informe spam
Hola Leonardo,

muchas gracias por contestar, a tu pregunta de ¿porque hago esto así? bueno
es que no se ocurre otra manera de hacerlo, es decir un Procedimiento graba
en fichero unos datos y luego si no hay error ese procedimento llama a otro
para grabar otros datos en otra tabla, el porque usar un procedimento dentro
de otro es para no tener que repetir ese código varias veces ya que tengo que
grabar desde varios sitios.

Por otro lado Gracias por tu consejo con el uso de las "comillas", ahora el
problema es que me dice que no encuentra el procedimiento, pero parece que
cree qeu el nombre del procedimento es con parámetros y todo, mira.

este es mi código:

SET @Orden = 'sp_AgregarDonacionDet ' +
@ClaveDonacion + ' , ' + convert(varchar, @Contador) +
', ''C'' , ' + '''' + @Caract1 + ''''
PRINT @Orden
EXEC @Orden

y esta es la cadena generada, parece que todo ok.
sp_AgregarDonacionDet 9187944 , 1, 'C' , 'Peso (gr)'

Y ESTE ES EL ERROR.
No se encontró el procedimiento almacenado 'sp_AgregarDonacionDet 9187944 ,
1, 'C' , 'Peso (gr)''.

Si lo ejecuto desde la consola funciona bién.

¿Alguna idea?

Muchas gracias
Respuesta Responder a este mensaje
#3 E.CORTIJO
04/05/2008 - 23:09 | Informe spam
Buenas tardes Sr. Azpurua, le envie un mail para tratar sobre su aplicación
de Nomina pero no me ha contestado, estoy en Maracaibo Zulia.
elvisc/Arroba/movistar. net . ve

"Leonardo Azpurua" <l e o n a r d o [arroba] m v p s [punto] o r g> escribió
en el mensaje news:%

"Dani" escribió en el mensaje
news:
Hola a todos, tengo un problema con un procedimiento que llama a otro y
le
paso unos parametros. uno de los parametros tiene caracteres como
parentesis,
etc... y claro me da un error este es un ejemplo.

SET @Orden = 'sp_AgregarDonacionDet '+ @ClaveDonacion + ', ' +
@Contador +
', C, ' + @Caract1
exec (@Orden)

esta es la cadena generada: sp_AgregarDonacionDet 487944, 1, C, Peso
(gr)

y este es el error: Sintaxis incorrecta cerca de 'gr'.



Hola.

En este caso es mucho mas simple escribir:

EXEC sp_AgregarDonacionDet @ClaveDonacion, @Contador, 'C', @Caract1

(¿qué es C?)

Para hacer lo que quieres (aunque no entiendo por que lo quieres así en
éste caso en particular), debes incluir los apóstrofes que delimitan
@Carac1:

SET @Orden = 'sp_AgregarDonacionDet ' +
@ClaveDonacion + ', ' +
@Contador + ', ''C'', ' + '''' + @Caract1 + ''''
EXEC @Orden


Salud!


Respuesta Responder a este mensaje
#4 Leonardo Azpurua
05/05/2008 - 03:36 | Informe spam
"Dani" escribió en el mensaje
news:
Hola Leonardo,

muchas gracias por contestar, a tu pregunta de ¿porque hago esto así?
bueno
es que no se ocurre otra manera de hacerlo, es decir un Procedimiento
graba
en fichero unos datos y luego si no hay error ese procedimento llama a
otro
para grabar otros datos en otra tabla, el porque usar un procedimento
dentro
de otro es para no tener que repetir ese código varias veces ya que tengo
que
grabar desde varios sitios.



Eso lo entiendo, pero desde dentro de un SP puedes llamar a otro sin
necesidad de meter todo el comando en una cadena:

Es decir, en vez de

SET @Orden = 'sp_AgregarDonacionDet ' +
@ClaveDonacion + ' , ' + convert(varchar, @Contador) +
', ''C'' , ' + '''' + @Caract1 + ''''
PRINT @Orden
EXEC @Orden



podrías perfectamente escribir:

EXEC sp_AgregarDonacionDet @ClaveDonacion, @Contador, 'C', @Caract1

De hecho creo que esa es la manera correcta de hacerlo. Para llamar
"indirectamente" (por pura curiosidad ¿vienes de VFP o algun otro derivado
de XBase?) creo que deberías hacerlo mediante

EXEC sp_executesql @Orden


Salud!
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida