Expresion dinamica para ejec. funcion

30/11/2004 - 17:33 por Javier | Informe spam
Necesito crear una expresion para llamar una funcion y encajarla en un select
dinamicamente construido.

cadena a conseguir:
sueldo= DBO.SFFMONEDATO('RD$', 2525.3300,'2004-12-01',1,'EU0$')

expresiones como orden, criterios de selecciones varios etc.

#1: con esta sentecia :
set @expresuel=' sueldo=
DBO.SFFMONEDATO("'+rtrim(@monofic)+'",'+str(@val,10,4)+',"'+@f1+'",1,'+'"'+rtrim(@monset)+'")'

puedo construir lo siguiente:
sueldo= DBO.SFFMONEDATO("RD$", 2525.3300,"2004-12-01", 1, "YE$")

pero no funciona, si trato de asignar comillas simple en vez de doble en la
sentencia #1 genera error invalid column name,
pero si probando intento asiganar la expresion valida a una variable genera
el mismo error.

si solo se tratra de la funcion seria posible ejecutar diferentes QUERY
condicionalamente pero tengo la dificulta de que son muchos los valores a
considererar y la construccion dinamica me resuelve;

que se puede hacer.

Gracias
Javier

Preguntas similare

Leer las respuestas

#1 ulises
30/11/2004 - 19:46 | Informe spam
Para usar comillas dobles el SET QUOTED_IDENTIFIER
tendrías que estar en OFF, p.e.

SET QUOTED_IDENTIFIER OFF
GO
SELECT @sueldo = dbo.SFFMONEDA("RD$" ...

si está en ON te debería aceptar sin problemas las comillas
simples :

SET QUOTED_IDENTIFIER ON
GO
SELECT @sueldo = dbo.SFFMONEDA('RD$', ...

personalmente prefiero esta última opción (debes ingresar
dos veces la comilla simple si deseas que se contabilice
como una).

Saludos,
Ulises

Necesito crear una expresion para llamar una funcion y


encajarla en un select
dinamicamente construido.

cadena a conseguir:
sueldo= DBO.SFFMONEDATO('RD$',


2525.3300,'2004-12-01',1,'EU0$')



suman otras
expresiones como orden, criterios de selecciones varios etc.

#1: con esta sentecia :
set @expresuel=' sueldo=
DBO.SFFMONEDATO("'+rtrim(@monofic)+'",'+str(@val,10,4)+',"'+@f1+'",1,'+'"'+rtrim(@monset)+'")'

puedo construir lo siguiente:
sueldo= DBO.SFFMONEDATO("RD$", 2525.3300,"2004-12-01", 1,


"YE$")

pero no funciona, si trato de asignar comillas simple en


vez de doble en la
sentencia #1 genera error invalid column name,
pero si probando intento asiganar la expresion valida a


una variable genera
el mismo error.

si solo se tratra de la funcion seria posible ejecutar


diferentes QUERY
condicionalamente pero tengo la dificulta de que son


muchos los valores a
considererar y la construccion dinamica me resuelve;

que se puede hacer.

Gracias
Javier
.

Respuesta Responder a este mensaje
#2 Javier
01/12/2004 - 17:25 | Informe spam
Gracias por tu colaboracion.

Si ejecute un select como lo enucias funciona bien, pero lo que necesito
hacer es:
set @qllexpre='select '+@lafuncion+...
donde la @lafuncion=' sueldo = dbo.SFFMONEDA("RD$" ...'
pero previamente necesito armar el contenido de @lafuncion concatenando
varios campos o variables.

es el error me da cuanto intento concatenarlos campos para crear la expresion.

Javier


"ulises" wrote:

Para usar comillas dobles el SET QUOTED_IDENTIFIER
tendrías que estar en OFF, p.e.

SET QUOTED_IDENTIFIER OFF
GO
SELECT @sueldo = dbo.SFFMONEDA("RD$" ...

si está en ON te debería aceptar sin problemas las comillas
simples :

SET QUOTED_IDENTIFIER ON
GO
SELECT @sueldo = dbo.SFFMONEDA('RD$', ...

personalmente prefiero esta última opción (debes ingresar
dos veces la comilla simple si deseas que se contabilice
como una).

Saludos,
Ulises

>Necesito crear una expresion para llamar una funcion y
encajarla en un select
>dinamicamente construido.
>
>cadena a conseguir:
>sueldo= DBO.SFFMONEDATO('RD$',
2525.3300,'2004-12-01',1,'EU0$')
>
suman otras
>expresiones como orden, criterios de selecciones varios etc.
>
>#1: con esta sentecia :
>set @expresuel=' sueldo=
>DBO.SFFMONEDATO("'+rtrim(@monofic)+'",'+str(@val,10,4)+',"'+@f1+'",1,'+'"'+rtrim(@monset)+'")'
>
>puedo construir lo siguiente:
>sueldo= DBO.SFFMONEDATO("RD$", 2525.3300,"2004-12-01", 1,
"YE$")
>
>pero no funciona, si trato de asignar comillas simple en
vez de doble en la
>sentencia #1 genera error invalid column name,
>pero si probando intento asiganar la expresion valida a
una variable genera
>el mismo error.
>
>si solo se tratra de la funcion seria posible ejecutar
diferentes QUERY
>condicionalamente pero tengo la dificulta de que son
muchos los valores a
>considererar y la construccion dinamica me resuelve;
>
>que se puede hacer.
>
>Gracias
>Javier
>.
>

Respuesta Responder a este mensaje
#3 ulises
01/12/2004 - 17:39 | Informe spam
Si te da un error al momento de la concatenación es
posiblemente porque algunos de los campos que deseas
concatenar es numérico y por lo tanto intentará hacer una
operación aritmética, antes de concatenarlos tendrías que
usar CONVERT o CAST para convertirlos a VARCHAR.

Saludos,
Ulises

Gracias por tu colaboracion.

Si ejecute un select como lo enucias funciona bien, pero


lo que necesito
hacer es:
set @qllexpre='select '+@lafuncion+...
donde la @lafuncion=' sueldo = dbo.SFFMONEDA("RD$" ...'
pero previamente necesito armar el contenido de @lafuncion


concatenando
varios campos o variables.

es el error me da cuanto intento concatenarlos campos para


crear la expresion.

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