Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Parámetro como nombre de campo (https://www.clubdelphi.com/foros/showthread.php?t=42365)

Loviedo 12-04-2007 16:51:38

Parámetro como nombre de campo
 
Tengo que ejecutar un procedimiento almacenado pero el campo que tengo que actualizar no lo conozco va en función de un parámetro. He probado con esto pero no funciona:

Código SQL [-]

CREATE PROCEDURE MODIPRO3 (
    pcas integer,
    pval numeric(9,2),
    pmes varchar(6))
as
begin
UPDATE Propietarios
  SET
    &pmes  = :pVal
WHERE CASA  = :pCas;
END

Se puede incluir parámetro como nombre de campo?

Saludos y Gracias.

Loviedo 12-04-2007 16:53:42

He olvidado indicar que utilizo Delphi7 y Firebird 2.0.

Saludos.

Lepe 12-04-2007 17:42:56

No lo he probado pero he leído que si.

Código SQL [-]
CREATE PROCEDURE MODIPRO3 (
    pcas integer,
    pval numeric(9,2),
    pmes varchar(6))
as
begin
execute statement 'UPDATE Propietarios  SET '|| :pmes || ' = ' || pVal ||' WHERE CASA  = ' || pCas;
END

Para concatenar los strings con las variables intercaladas, creo que hay que usar algún operador, pero no estoy seguro, prueba con || (dos tuberías).

La eficiencia es otro tema, esa expresión se compilará al tiempo de ejecutarla, por tanto, es más lento que un update sin expresiones.

Saludos

Loviedo 12-04-2007 19:09:44

El IBExpert lo acepta bien, pero da error al ejecutarlo desde la aplicación en la concatenación.
Muchas gracias por tu ayuda.

Loviedo 12-04-2007 19:49:35

Me ha funcionado, el error estaba en el valor y tamaño del campo.

Muchas gracias de nuevo.


La franja horaria es GMT +2. Ahora son las 11:54:20.

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