Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-10-2016
rruffino rruffino is offline
Miembro
 
Registrado: dic 2004
Ubicación: Berrotaran, Cordoba - Argentina
Posts: 215
Poder: 20
rruffino Va por buen camino
Respuesta

Correcto, en principios tenia los dos puntos, como si fuera parámetro, luego lo tengo cambiado y funcionando, salvo cuando quiero pasar fechas.
Saludos.
Responder Con Cita
  #2  
Antiguo 26-10-2016
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola rruffino.

No tengo a mano la versión 2.1 como para probar, pero creo que no tendrías problemas enviando parámetros del tipo DATE, al modo de este ejemplo:
Código SQL [-]
SET TERM ^ ;

CREATE OR ALTER PROCEDURE SP_TEMP2 (
    P_FECHA DATE )
RETURNS (     
    FEC DATE,
    COD VARCHAR(10),
    ART VARCHAR(40))
AS
DECLARE VARIABLE STMT VARCHAR(500);
BEGIN
  FOR EXECUTE STATEMENT
    'SELECT FECHA, COD_FACT, ARTICULO ' ||
    'FROM VENTAS WHERE FECHA <= ' || :P_FECHA
  INTO
    :FEC,
    :COD,
    :ART
  DO BEGIN
    SUSPEND;
  END
END^

SET TERM ; ^

Si usaras la versión 2.5 o superior, podes hacer uso de parámetros dinámicos como en los siguientes ejemplos:

. Usando parámetros con nombre.
Código SQL [-]
SET TERM ^ ;

CREATE OR ALTER PROCEDURE SP_TEMP (
    P_FECHA DATE )
RETURNS (     
    FEC DATE,
    COD VARCHAR(10),
    ART VARCHAR(40))
AS
DECLARE VARIABLE STMT VARCHAR(500);
BEGIN
  STMT = 'SELECT FECHA, COD_FACT, ARTICULO ' ||
         'FROM VENTAS WHERE FECHA <= :A';

  FOR EXECUTE STATEMENT (:STMT)(A := :P_FECHA)
  INTO
    :FEC,
    :COD,
    :ART
  DO BEGIN
    SUSPEND;
  END
END^

SET TERM ; ^

. Usando parámetros sin nombre.
Código SQL [-]
SET TERM ^ ;

CREATE OR ALTER PROCEDURE SP_TEMP (
    P_FECHA DATE )
RETURNS (     
    FEC DATE,
    COD VARCHAR(10),
    ART VARCHAR(40))
AS
DECLARE VARIABLE STMT VARCHAR(500);
BEGIN
  STMT = 'SELECT FECHA, COD_FACT, ARTICULO ' ||
         'FROM VENTAS WHERE FECHA <= ?';

  FOR EXECUTE STATEMENT (:STMT)(:P_FECHA)
  INTO
    :FEC,
    :COD,
    :ART
  DO BEGIN
    SUSPEND;
  END
END^

SET TERM ; ^
Los tres ejemplos de SP se pueden llamar del mismo modo:
Código SQL [-]
SELECT FEC, COD, ART FROM SP_TEMP( '19.4.2016' )

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
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
Error EXECUTE STATEMENT tonyskl Firebird e Interbase 3 22-01-2009 10:07:17
Execute statement Ana Tudela Firebird e Interbase 7 12-12-2006 12:27:13
Problema con execute statement Ivanzinho Firebird e Interbase 3 29-12-2005 09:25:00
Execute Statement jwmoreira Firebird e Interbase 12 22-05-2005 20:55:27
for execute statement conquer Firebird e Interbase 0 16-02-2005 22:23:49


La franja horaria es GMT +2. Ahora son las 00:28:58.


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