salida procedimientos procedimiento parametros funciones ejemplos ejecutar developer cursores con almacenados almacenado oracle plsql

procedimientos - procedimiento almacenado oracle select



En PL/SQL, ¿puedo pasar el esquema de la tabla de una cláusula cursor FROM a través de un parámetro de procedimiento almacenado? (2)

Además de lo que dijo Mark Brady, otra opción de SQL dinámico es usar un REF CURSOR. Como el código de muestra incluye un cursor, este sería el más relevante.

PROCEDURE select_from_schema( the_schema VARCHAR2) IS TYPE my_cursor_type IS REF CURSOR; my_cursor my_cursor_type; BEGIN OPEN my_cursor FOR ''SELECT my_field FROM ''||the_schema||''.my_table''; -- Do your FETCHes just as with a normal cursor CLOSE my_cursor; END;

En PL / SQL, me gustaría pasar un esquema "fuente" como parámetro a un procedimiento almacenado. Por ejemplo:

BEGIN CURSOR my_cursor IS SELECT my_field FROM <schema>.my_table ...

Quiero que el valor ''esquema'' provenga de un parámetro de entrada en el procedimiento almacenado. ¿Alguien sabe cómo podría hacer eso?

PD: Lo siento si esta es una pregunta simple y estúpida, pero soy nuevo en PL / SQL y debo escribir algunas funciones rápidamente.


Esto tiene que hacerse con sql dinámico.

O el paquete DBMS_SQL o la instrucción Execute Inmediate.

No puede usar variables en la cláusula FROM.

Una posible solución puede ser

ALTER SESSION SET Current_Schema = '''' <- el esquema que desea.

Ese comando cambia el esquema predeterminado. ASÍ QUE si tiene un grupo de tablas con nombres idénticos, puede ahorrarse SQL dinámico y realizar una Sesión de Alternancia Dinámica.