Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Mostrar datos de un store procedure con una vista?? (https://www.clubdelphi.com/foros/showthread.php?t=86605)

ungrande87 08-09-2014 15:52:18

Mostrar datos de un store procedure con una vista??
 
Hola gente del foro, disculpen mi ignorancia pero tengo una consulta: como dice el titulo del tema es posible mostrar el resultado de un procedimiento almacenado desde una vista?. Estoy trabajando con Sql.

duilioisola 08-09-2014 16:21:34

Si la base de datos es Firebird y el procedimiento almacenado no tiene parámetros puedes hacer esto:

Código SQL [-]
CREATE VIEW VER_VERSION(
   VERSION)
AS
select VERSION
from dame_version

También puedes utilizar el procedimiento para obtener la información de un campo de la vista.
Código SQL [-]
CREATE VIEW VER_CODIGO_EAN13(
   ARTICULO,
   COD_BARRA)
AS
select a.articulo,
       (select cod_barra
        from dame_codigo_barras('EAN13', a.articulo))
from articulos a

ecfisa 08-09-2014 16:24:14

Hola ungrande87.

Cita:

Empezado por ungrande87 (Mensaje 480858)
...Estoy trabajando con Sql.

Si, pero, ¿ Con cuál RDBMS ? (Oracle, Postgre SQL, Firebird, MySQL, MS SQL Server, ... :confused:)

Saludos :)

ungrande87 08-09-2014 16:28:21

Cita:

Empezado por ecfisa (Mensaje 480863)
Hola ungrande87.


Si, pero, ¿ Con cuál RDBMS ? (Oracle, Postgre SQL, Firebird, MySQL, MS SQL Server, ... :confused:)

Saludos :)

Perdon, olvide aclarar, con Interbase 6.0

ungrande87 08-09-2014 16:31:27

Cita:

Empezado por duilioisola (Mensaje 480862)
Si la base de datos es Firebird y el procedimiento almacenado no tiene parámetros puedes hacer esto:

Código SQL [-]
CREATE VIEW VER_VERSION(
   VERSION)
AS
select VERSION
from dame_version

También puedes utilizar el procedimiento para obtener la información de un campo de la vista.
Código SQL [-]
CREATE VIEW VER_CODIGO_EAN13(
   ARTICULO,
   COD_BARRA)
AS
select a.articulo,
       (select cod_barra
        from dame_codigo_barras('EAN13', a.articulo))
from articulos a

Gracias por la pronta respuesta, no tiene parámetros de entrada, solo de salida. Cuando intento hacerlo de la manera que dices, me tira un error indicando que no existe la tabla ...., sabiendo que el nombre del procedimiento al cual hago referencia esta correcto.

ecfisa 08-09-2014 18:19:14

Hola ungrande87.

Te ejemplifico, partiendo de la tabla:
Código SQL [-]
CREATE TABLE TEST (
  ID  INTEGER,
  CAMPO INTEGER
)
Generas la vista:
Código SQL [-]
CREATE OR ALTER VIEW V_TEST (
    ID,
    CAMPO )
AS
SELECT * FROM TEST
Y el procedimiento:
Código SQL [-]
SET TERM ^;
CREATE OR ALTER PROCEDURE PR_TEST
RETURNS ( RESULT INTEGER )
AS
BEGIN
  SELECT SUM( CAMPO ) AS TOTAL FROM V_TEST INTO RESULT;
  SUSPEND;
END^
SET TERM ;^
Mostrar resultado en una consulta:
Código SQL [-]
SELECT RESULT FROM PR_TEST

Saludos :)

duilioisola 08-09-2014 18:47:34

Pon la declaración de tu procedimiento para que veamos su nombre, parámetros de entrada y salida.
Luego pon el script que crea la vista y que te da el error.

Supongo que no estás poniendo bien los nombres de los campos en la parte SELECT, o del procedimiento o algo así.
Quizás estás nombrando al procedimiento y a la vista con el mismo nombre.

En el ejemplo anterior, sería algo así:

Código SQL [-]
CREATE PROCEDURE DAME_VERSION
RETURNS (VERSION INTEGER)
AS
begin
...
end

CREATE VIEW VER_VERSION(
   VERSION)
AS
select VERSION
from dame_version


La franja horaria es GMT +2. Ahora son las 22:28:08.

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