从不同的模式调用包中的Oracle过程?

时间:2014-11-22 21:51:10

标签: sql oracle plsql procedures

我已经用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来工作。

2 个答案:

答案 0 :(得分:3)

GRANT EXECUTE ON ADMIN_PROYECTOS.PQ_PaqueteIntegrantes TO Admin

然后,您可以使用Admin用户

调用此程序包中的过程
BEGIN
ADMIN_PROYECTOS.PQ_PaqueteIntegrantes.INTEG_INSERCIONES(paIdIntegrante, paNombre, paNombre);
END;

答案 1 :(得分:0)

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

 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;
相关问题