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