Ayuda urgente!!
Buenos dÃas,
sólo querÃa saber si es posible a través de un procedimiento devolver un conjunto de datos, es decir, los resultados de una select, y si es posible, como hacerlo.
Gracias por adelantado
un saludo
sólo querÃa saber si es posible a través de un procedimiento devolver un conjunto de datos, es decir, los resultados de una select, y si es posible, como hacerlo.
Gracias por adelantado
un saludo
CREATE FUNCTION pract_ALUMNOS(
@NumPract int
RETURNS @pract_ALUMNOS table ( --definimos la estructura de la tabla que figura como retorno
codAlumno int PRIMARY KEY,
nombre varchar(100),
apellido1 varchar(50)
numPracticas int )
BEGIN
BEGIN
RETURN SELECT codAlumno, nombre, apellido1
END
END
ESTE SCRIP ES DE SQL_SERVER, SUPONGO QUE SERA SIMILAR AL SQL DE ORACLE.
@NumPract int
RETURNS @pract_ALUMNOS table ( --definimos la estructura de la tabla que figura como retorno
codAlumno int PRIMARY KEY,
nombre varchar(100),
apellido1 varchar(50)
numPracticas int )
BEGIN
BEGIN
RETURN SELECT codAlumno, nombre, apellido1
END
END
ESTE SCRIP ES DE SQL_SERVER, SUPONGO QUE SERA SIMILAR AL SQL DE ORACLE.
ES ALGO DISTINTO Prueba asi
CREATE OR REPLACE FUNCTION cheque(numero number) RETURN acct_cheques_caja_chica%rowtype IS
tmpVar acct_cheques_caja_chica%rowtype;
BEGIN
select * into tmpVar from acct_cheques_caja_chica where seq_cheque = numero;
RETURN tmpVar;
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
WHEN OTHERS THEN
RAISE;
END cheque;
** el resultado tiene que regresar en una variable
de tipo tabla%rowtype
CREATE OR REPLACE FUNCTION cheque(numero number) RETURN acct_cheques_caja_chica%rowtype IS
tmpVar acct_cheques_caja_chica%rowtype;
BEGIN
select * into tmpVar from acct_cheques_caja_chica where seq_cheque = numero;
RETURN tmpVar;
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
WHEN OTHERS THEN
RAISE;
END cheque;
** el resultado tiene que regresar en una variable
de tipo tabla%rowtype
ademas puedes crear tus propios tipos de datos
CREATE OR REPLACE TYPE squema.nombrecompleto AS OBJECT
(
nombre VARCHAR2(255),
apellido VARCHAR2(255)
);
y usas una fucion asi
CREATE OR REPLACE FUNCTION nombre(id number) RETURN nombrecompleto IS
tmpVar nombrecompleto;
BEGIN
select pers_nombre, pers_apellido into tmpvar.nombre, tmpvar.apellido
from personas where pers_id = id;
RETURN tmpVar;
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
WHEN OTHERS THEN
RAISE;
END nombre;
CREATE OR REPLACE TYPE squema.nombrecompleto AS OBJECT
(
nombre VARCHAR2(255),
apellido VARCHAR2(255)
);
y usas una fucion asi
CREATE OR REPLACE FUNCTION nombre(id number) RETURN nombrecompleto IS
tmpVar nombrecompleto;
BEGIN
select pers_nombre, pers_apellido into tmpvar.nombre, tmpvar.apellido
from personas where pers_id = id;
RETURN tmpVar;
EXCEPTION
WHEN NO_DATA_FOUND THEN
NULL;
WHEN OTHERS THEN
RAISE;
END nombre;
para eso utiliza tablas temporales insertas los datos
y tendras tu resultado, y tu funcion que regrese el tabla%rowtype
y tendras tu resultado, y tu funcion que regrese el tabla%rowtype
