Saludos.
Soy nuevo en esto de Oracle pero nosotros acá en la empresa utilizamos D2007, Oracle 10 y nos conectamos con dbExpress, esto es parte de un procedimiento:
Código SQL
[-]
create or replace procedure STORED_PROCEDURE
( V_NUMERO IN NUMBER DEFAULT NULL,
CV_1 IN OUT SYS_REFCURSOR) is
begin
OPEN CV_1 FOR
SELECT *
FROM VIEW
WHERE NUMERO = NVL(V_NUMERO, 0)
AND CAMPO2 IN (1, 2 ,3)
ORDER BY CAMPO1, CAMPO2;
end;
El VIEW es tu sentencia de SELECT estandard y el procedimiento nos sirve para filtrar la data según el usuario.
La sentencia para llamarlo como FireBird (select * from procedimiento) realmente no la manejo pero nosotros utilizamos el componente de stored procedure de dbExpress y lo conectamos a un ClientDataSet vía el Provider y solo hacemos ClientDataSet.Open (si lleva parámetros se lo enviamos). Ya el ClientDataSet sabe que hacer.
Hasta luego.