【问题标题】:Calling an Oracle procedure within a package from a different schema?从不同的模式调用包中的 Oracle 过程?
【发布时间】:2015-01-20 20:58:39
【问题描述】:

我创建了以下包含 3 个程序的包:

CREATE OR REPLACE PACKAGE PQ_PaqueteIntegrantes
AS 
PROCEDURE INTEG_INSERCIONES(paIdIntegrante IN CreadorTablas.INTEGRANTES.ID_INTEGRANTE%TYPE 
                           ,paNombre IN CreadorTablas.INTEGRANTES.NOMBRE%TYPE
                           ,paApellidoPaterno IN CreadorTablas.INTEGRANTES.APELLIDO_PATERNO%TYPE);

PROCEDURE INTEG_MODIFICACIONES(paIdIntegrante IN OUT CreadorTablas.INTEGRANTES.ID_INTEGRANTE%TYPE 
                              ,paNombre IN OUT CreadorTablas.INTEGRANTES.NOMBRE%TYPE
                         ,paApellidoPaterno IN OUT CreadorTablas.INTEGRANTES.APELLIDO_PATERNO%TYPE);

PROCEDURE INTEG_ELIMINCACIONES( 
               paIdIntegrante    IN OE.EJEMPLO_TRANSAC_CLASE.CUSTOMER_ID%TYPE
                                ,paMjeDescError OUT VARCHAR2
                                ,paCodeError    OUT NUMBER);             
END PQ_PaqueteIntegrantes;

我使用名为 Admin_proyectos 的用户创建了这些程序。第一个过程是“插入”,第二个是“更新”,最后一个是“删除”,它们都在一个名为 Integrantes 的表上工作,该表来自另一个名为 的用户CreadorTablas。 我的意图是创建另一个名为 Admin 的用户,他将负责执行这些操作,当然,使用此包中的过程。我试过做一个 PL/SQL 块,但它没有用,EXEC 也没有。

【问题讨论】:

    标签: sql oracle plsql procedures


    【解决方案1】:
    GRANT EXECUTE ON ADMIN_PROYECTOS.PQ_PaqueteIntegrantes TO Admin
    

    然后,您可以以Admin用户身份调用此包中的程序

    BEGIN
    ADMIN_PROYECTOS.PQ_PaqueteIntegrantes.INTEG_INSERCIONES(paIdIntegrante, paNombre, paNombre);
    END;
    

    【讨论】:

      【解决方案2】:

      您可以使用立即执行语句:

       l_sql_stmt := 'alter table ' || p_table_name || ' drop partition ' || i.PARTITION_NAME || ';';
                  dbms_output.put_line( l_sql_stmt );
                  execute immediate l_sql_stmt;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-12
        • 1970-01-01
        • 2020-04-18
        • 2012-10-13
        • 1970-01-01
        相关资源
        最近更新 更多