FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Variable en un update.
Hola gente:
tengo el siguiente problema y como siempre aca le encuentran solúcíon planteo el mismo; Quiero ejecutar desde un store procedure en firebird la sentencia insert into tabla (campo1,variable) values (:campo,:campo3). Siendo la variable distinta para cada insert. Es decir el insertt está en un while y la variable puede ser la primera vez que ingresa en el while campo2 (o sea variable = campo2) pero la segunda vez puede ser campo3 (o sea variable = campo3). Mi pregunta es como hago para que me tome la variable en el insert. Probé haciendo insert into tabla1 (campo1,:variable) values (:campo,:campo3), también como insert into tabla1 (campo1,"variable") values (:campo,:campo3) y también insert into tabla1 (campo1, '+variable+') values (:campo,:campo3) pero de ninguna manera de estas me deja compilar. Alguna idea??..... Muchas gracias por el tiempo que le dedican a este foro. Saludos. Mariano. |
#2
|
||||
|
||||
Hola mcalmanovici
en realidad no entendí muy lo que quieres hacer... sobre todo Cita:
si es así... creo que debes hacer un SP que inserte datos en todos los campos y que le pases datos por variables para todos los campos.. acuerdate que si los campos no permite nulos... no podrás insertar un solo campo de un registro por que te dará error.... salu2.... PS: pon algo de ejemplo...
__________________
BlueSteel |
#5
|
|||
|
|||
A ver si me explico un poco mejor.
Voy a poner un ejemplo más concreto.
En el store procedure tengo: Código SQL [-]CREATE PROCEDURE PROCESAR_DIA_DEL_MES ( MES INTEGER, ANIO INTEGER, DIA INTEGER) AS/*----*/ declare variable remoteterminalid integer; declare variable cantidad_total_reporte integer; declare variable cnt integer; declare variable fechaIni date; declare variable fechaFin date; declare variable sla date; BEGIN /* Procedure body */ fechaIni = Anio||'-'||Mes||'-'||Dia||' 00:00:00'; fechaFin = Anio||'-'||Mes||'-'||Dia||' 23:59:59'; sla = 'DIA'||IA||'_SLA'; //esta es la variable que quiero poner //en el insert o en el update y no puedo porque me tira error de compilación. for SELECT tr.remoteterminalid AS REMOTETERMINALID, count (tr.datetime) as CANTIDAD_TOTAL_REPORTE from tsdreport tr left join remoteterminal rt on (tr.remoteterminalid=rt.remoteterminalid) where tr.datetime >= :fechaIni and tr.datetime <= :fechaFin group by tr.remoteterminalid into:remoteterminalid,:cantidad_total_reporte do begin select count(*) from TEMPO_MCA_SLA where REMOTETERMINALID = :remoteterminalid into:cnt; /*EL PROBLEMA ES QUE NO ACEPTA QUE PONGA UNA VARIABLE EN EL SET Y EN EL INSERT INTO, EN ESTE CASO SLA*/ if (cnt <> 0) then begin update TEMPO_MCA_SLA set sla = :cantidad_total_reporte where REMOTETERMINALID = :remoteterminalid; end else begin insert into TEMPO_MCA_SLA (REMOTETERMINALID,sla) values (:remoteterminalid,:cantidad_total_reporte); end end SUSPEND; END El problema lo tengo con el sla que esta en negrita que como verán es una variable que va cambiando cada vez que llamó al store procedure, ya que la tabla TEMPO_MCA_SLA tiene 31 campos y yo los voy a ir actualizando uno por uno. No sé si ahora me pude explicar un poco mejor. Muchas gracias por la ayuda que me dan siempre. Última edición por mcalmanovici fecha: 03-04-2008 a las 14:40:03. |
#6
|
||||
|
||||
Saludos.
Como bien explica los enlaces indicado por RONPABLO puedes utilizar EXECUTE STAMENT para esta operación. Puedes buscar referencia sobre esta sentencia también en el Release Notes de Firebird. Hasta luego.
__________________
Gracias, Rolphy Reyes |
#7
|
|||
|
|||
Sigo con el mismo problema
Hola,
si con ese execute stament hago lo siguiente:
Y me sale un error que no conoce remoteterminalid. Si pongo me sale que no conoce sla que es la variable que yo quiero que vaya cambiando según el día que yo le pasé. Por lo cual con el exectue statement tengo el mismo problema. No sé si lo estaré usando mal o existe alguna otra solución. Muchas gracias. Mariano. |
#8
|
||||
|
||||
y que tal si lo pones así??
Me imagino que sla es una variable de tipo texto donde va el nombre del campo que quiero usar
__________________
"Como pasa el tiempo..... ayer se escribe sin H y hoy con H" |
#9
|
||||
|
||||
Tienes que concatenar dichos valores en esa variable que haz llamado stins, así:
Suponiendo que tienes un parámetro de entrada llamado Nombre_campo y otro llamado Valor_campo, la cosa sería...
Quizá me falte alguna comilla antes y después de ||Valor_campo||, todo depende del tipo de campo que estas manejando, si es de tipo char, varchar o Date por ejemplo... las vas a necesitar, si el tipo de campo es numérico, no.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!" http://www.purodelphi.com/ http://www.nosolodelphi.com/ |
#10
|
||||
|
||||
Cita:
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!" http://www.purodelphi.com/ http://www.nosolodelphi.com/ |
#11
|
|||
|
|||
Ya pude solucionarlo
Cita:
Muchas gracias RONPABLO y jonnhy. Después probando me di cuenta que era como ustedes me están diciendo. Y cuando iba a postear la solución ya vi que me respondieron. Vuelvo a agradecer por su cooperación y por la rapidez que contestaron. Saludos. Mariano. Pd: igual copio el cógido tal cual como a mí me anduvo:
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
UPDATE con seccion llamada UPDATE sql's MyDAC | karlaoax | SQL | 4 | 25-04-2007 22:10:50 |
variable dentro de una variable | molinero1 | Varios | 3 | 23-04-2007 12:44:48 |
SQL Update | Gustavo Gowdak | SQL | 1 | 29-06-2006 23:11:07 |
Update registro - fallo con variable | Gorehide | SQL | 4 | 13-07-2004 19:12:32 |
|