Ejecutar cadena SQL desde un SP
Hola muchachos!
Tengo una cadena sql que se arma dinamicamente cuando selecciono unas opciones y ejecuto luego desde una consulta no genera ningun error, tampoco actualiza nada. He probado desde tantas opciones, pero no obtuve resultado alguno entonces decidí poner un execute dentro de un strored procedure que evalue la cadena que paso como parámetro, pero tampoco me deja hacerlo, no es como en MS-SQL Server. Así que pregunto, como sería esto desde un SP, o sea que reciba como parametro la consulta de actualización y luego la ejecute. Y por qué puede ser que la consulta desde la aplicación no genere ningun resultado y tampoco genere error? Saludos y cualquier ayuda me serviria de mucho, muchas gracias! Paso acá un ejemplo de la consulta, ya que tampoco me actualiza desde una consola UPDATE DB2ADMIN.PRODUCTO SET PRECIO_COSTO=PRECIO_COSTO* ( 1 + 10/100 ); Si pongo un precio de costo fijo sí lo hace, pero en este ejemplo que incremento un 10% no Gracias! |
Hola waly2k1,
Es posible que el valor de PRECIO_COSTO este a NULL y por esta razón no te actualiza el precio, hay una función en SQL Server que es ISNULL(CAMPO, 0) esto quiere decir que si el CAMPO está a NULL se convierte a 0 (cero) Valor del Campo: Cita:
|
Rta. olbeup
No, el campo contiene valor. Suena logico si lo que decis, pero debería dejarme un valor nulo en todo caso.
Pero de hecho tengo un solo registro en la tabla, ya que estoy migrando recién la base desde MySQL a DB2. El problema acá es que a DB2 no le gusta la expresión: SET PRECIO_COSTO = PRECIO_COSTO * (1 + ( 10 /100)) Si en el codigo realizo algo como esto: Código:
var En fin, mientras se pueda hacerlo de cualquier manera no importa, pero cuando me toque la parte de grandes cálculos, ej. IVA y demas, me vuelvo loco con esto, ahí si que tendré que modificar muchas lineas de código, por algo que viene funcionando hace mucho con otros motores de base de datos normalmente. Pero bueh, así se aprende (por lo menos a renegar más hehe) Muchas gracias amigo por la ayuda, un abrazo! |
No estoy seguro si en DB2, en otras bases de datos hay una función que hace que devuelva un valor específico en caso de nulo.
Ejemplo oracle y FireBird (Función NVL):
Ejemplo MS Sql Server (Función ISNULL)
Ejemplo MySql y creo que en DB2 (Función IFNULL)
Contrasta la sintaxis que no sé seguro que sea así |
Puntualizo: En Firebird no existe la funcion NVL (al menos de forma nativa), es COALESCE:
|
Tenía mal la chuleta, gracias por la corrección :)
|
La franja horaria es GMT +2. Ahora son las 16:52:33. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi