Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-01-2010
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Poder: 22
fjcg02 Va camino a la fama
Actualización columnas "dinámicas" en Store Procedure

Hola a todos,
alguien conoce alguna manera de actualizar con un procedimiento almacenado una columna de una tabla que dependa de un parámetro?

Algo así como esto...

Código SQL [-]
CREATE OR ALTER PROCEDURE SP_PRUEBA (
    IDREGISTRO INTEGER,
    CAMPO VARCHAR(15),
    VALOR VARCHAR(20))
AS
BEGIN
  /* Procedure Text */
  
  UPDATE TABLA SET :CAMPO=:VALOR  WHERE IDREGISTRO=:IDREGISTRO;

  SUSPEND;
END^

Gracias y un saludo
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #2  
Antiguo 18-01-2010
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Poder: 22
fjcg02 Va camino a la fama
Hola,
lo he conseguido haciendo esto, pero..
Código SQL [-]
CREATE OR ALTER PROCEDURE SP_PRUEBA (
    IDREGISTRO INTEGER,
    CAMPO VARCHAR(15),
    VALOR DATE)
AS
  DECLARE SENTENCIA VARCHAR(100);
BEGIN
  /* Procedure Text */
   SENTENCIA= 'UPDATE TABLA SET '||:CAMPO ||'= '||CAST(FECHA AS VARCHAR(15))|| ' WHERE IDREGISTRO = '|| CAST(IDREGISTRO AS VARCHAR(10));

   EXECUTE STATEMENT SENTENCIA
   SUSPEND;
END^

Ahora bien, tengo un problema
SENTENCIA tiene lo siguiente con parámetros 20, FECHAINICIO y 17/01/2010
UPDATE TABLA SET FECHAINICIO = 2010-01-17 WHERE IDREGISTRO= 20

Si ejecuto es SP desde el ibexpert, y me funciona. Si la copio y la ejecuto desde la consola SQL del ibexpert también.

Si ejecuto el SP desde el programa delphi, me falla. Creo que tengo bien realizada la llamada, pero no me ha dado tiempo a revisarla.

Esta noche lo reviso y os cuento, porque en teoría, tendría que funcionar.

Un saludo

Nota: Igual la sintaxis está mal, ya que he escrito el SP 'a pelo' porque realmente es bastante más complejo que este ejemplo.
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -

Última edición por fjcg02 fecha: 18-01-2010 a las 10:01:56. Razón: Resaltar sintaxis y corregir SP
Responder Con Cita
  #3  
Antiguo 19-01-2010
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Poder: 22
fjcg02 Va camino a la fama
Hola a todos,
finalmente he arreglado el error de la llamada desde Delphi al procedimiento almacenado.
No sé porqué, se había quedado 'tonto', pesar de que la llamada era correcta.

Borrándolo y creándolo de nuevo, sin tocar nada más, el resultado es el correcto.

Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
"OBJECT OR CLASS TYPE REQUIRED" en "APPLICATION EXENAME" Xavierator Varios 3 27-10-2008 09:09:50
Mi Comentario sobre la "actualización" de Vista. AzidRain Debates 33 23-05-2008 15:13:14
Necesito llamar a métodos de clases "hija" desde su clase "padre" Flecha OOP 17 20-04-2007 00:03:53
STORE PROCEDURE "RETURNS". barman PHP 0 01-07-2004 12:10:08
"Problema de actualizacion con update" luisreg SQL 5 23-09-2003 17:16:17


La franja horaria es GMT +2. Ahora son las 19:02:45.


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
Copyright 1996-2007 Club Delphi