PDA

Ver la Versión Completa : Mostrar datos de un store procedure con una vista??


ungrande87
08-09-2014, 15:52:18
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:


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.

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.

...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
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
Si la base de datos es Firebird y el procedimiento almacenado no tiene parámetros puedes hacer esto:


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.

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:

CREATE TABLE TEST (
ID INTEGER,
CAMPO INTEGER
)

Generas la vista:

CREATE OR ALTER VIEW V_TEST (
ID,
CAMPO )
AS
SELECT * FROM TEST

Y el procedimiento:

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:
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í:


CREATE PROCEDURE DAME_VERSION
RETURNS (VERSION INTEGER)
AS
begin
...
end

CREATE VIEW VER_VERSION(
VERSION)
AS
select VERSION
from dame_version