FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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! Última edición por waly2k1 fecha: 26-07-2013 a las 07:14:09. Razón: ejemplo |
#2
|
||||
|
||||
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:
__________________
Al hacer una consulta SQL, haz que los demás te entiendan y disfruten de ella, será tú reflejo de tú saber. |
#3
|
|||
|
|||
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 dPORC:double; dPORC := txtPORC.Value / 100; dPORC := 1 + dPORC; y luego: 'PRECIO_COSTO=PRECIO_COSTO * ' + FloatToStr( dblPORC ) 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! |
#4
|
||||
|
||||
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í
__________________
La Madurez se llama... ~~~Gaia~~~ |
#5
|
||||
|
||||
Puntualizo: En Firebird no existe la funcion NVL (al menos de forma nativa), es COALESCE:
__________________
Progress Openedge https://abevoelker.com/progress_open...dered_harmful/ Delphi forever... |
#6
|
||||
|
||||
Tenía mal la chuleta, gracias por la corrección
__________________
La Madurez se llama... ~~~Gaia~~~ |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Problema de asignación de puntero desde una cadena | Sapiem | OOP | 5 | 26-10-2012 22:14:41 |
Funcion para buscar cadena dentro de otra cadena y el numero de veces | flystar | Varios | 3 | 02-07-2007 22:48:08 |
Ejecutar SP desde php | micayael | PHP | 6 | 26-12-2005 11:46:54 |
Buscar desde Delphi una cadena en PDF | Jose Manuel | Varios | 0 | 17-06-2004 19:31:16 |
Ejecutar desde CD ROM | _Juno_ | Varios | 4 | 11-05-2004 14:47:26 |
|