Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

PROSEDUR ORACLe - AUTHID hanya diizinkan di tingkat skema

Prosedur Anda tampaknya merupakan bagian dari sebuah paket. Dalam sebuah paket, Anda hanya dapat mengatur hak-hak panggilan (AUTHID CURRENT_USER ) pada tingkat paket. Anda tidak dapat mengaturnya untuk setiap prosedur individual.

Pindahkan hak pemanggil ke tingkat paket:

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;

Atau buat prosedur global (yaitu di tingkat skema dan bukan di tingkat paket):

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana Menemukan Waktu Eksekusi Kueri di Oracle SQL Developer?

  2. fungsi pipelined dengan parameter kursor oracle

  3. Bagaimana cara mendapatkan jumlah orang berdasarkan kelompok usia menggunakan kueri SQL di database Oracle?

  4. Tentang buat tabel sebagai pilihan (CTAS)

  5. SQL untuk menemukan kata-kata huruf besar dari kolom