Ayuda urgente!!

dfizban
13 de Febrero del 2006
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

david
13 de Febrero del 2006
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.

Axelopez
13 de Febrero del 2006
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

Axelopez
13 de Febrero del 2006
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;

Axelopez
13 de Febrero del 2006
para eso utiliza tablas temporales insertas los datos
y tendras tu resultado, y tu funcion que regrese el tabla%rowtype

leoriyagami
13 de Febrero del 2006
Viejo Axelopez..porque no pones todo en un mismo post???