sql >> Database >  >> RDS >> Oracle

ORAKLE-PROCEDURE - AUTHID alleen toegestaan ​​op schemaniveau

Uw procedure lijkt deel uit te maken van een pakket. In een pakket kunt u alleen aanroeprechten instellen (AUTHID CURRENT_USER ) op pakketniveau. U kunt dit niet voor elke afzonderlijke procedure instellen.

Verplaats de aanroeperrechten naar het pakketniveau:

CREATE OR REPLACE PACKAGE pkg
AUTHID CURRENT_USER
AS

    PROCEDURE BCKUP;

    -- more types, procedures and functions

END pkg;


CREATE OR REPLACE PACKAGE BODY pkg
AS

    PROCEDURE BCKUP 

    statusmsg VARCHAR2(400);

    BEGIN
        --Backup records
        EXECUTE IMMEDIATE 'CREATE TABLE schemaname.tabname AS SELECT pgm.* FROM XYZ pgm, IJK prf WHERE prf.col1=pgm.col1 AND prf.ID IN(SELECT ID FROM TAB2)';
        COMMIT;

    EXCEPTION WHEN OTHERS THEN
        statusmsg :='SQL ERRROR CODE ' || SQLCODE|| ' -ERROR- ' ||SQLERRM;
        dbms_output.put_line('ERROR : ' || statusmsg);
    END BCKUP;

END pkg;

Of maak een globale procedure (d.w.z. op schemaniveau en niet op pakketniveau):

CREATE OR REPLACE PROCEDURE BCKUP 
AUTHID CURRENT_USER AS
statusmsg VARCHAR2(400);

BEGIN
    --Backup records
    EXECUTE IMMEDIATE 'CREATE TABLE schemaname.tabname AS SELECT pgm.* FROM XYZ pgm, IJK prf WHERE prf.col1=pgm.col1 AND prf.ID IN(SELECT ID FROM TAB2)';
    COMMIT;

EXCEPTION WHEN OTHERS THEN
    statusmsg :='SQL ERRROR CODE ' || SQLCODE|| ' -ERROR- ' ||SQLERRM;
    dbms_output.put_line('ERROR : ' || statusmsg);
END BCKUP;



  1. onCreate() van RoomDatabase.Callback() is niet aangeroepen na een succesvolle aanroep van .build()

  2. Mysql - Hoe het isolatieniveau voor de transacties te achterhalen?

  3. MySQL 5.7.17 opstartlogboek met [Opmerking] Toegang geweigerd voor gebruiker 'UNKNOWN_MYSQL_USER'

  4. Problemen oplossen Oracle Form Builder-fout FRM-10044