Reputation: 99
i'm trying to create procedure to create Sequence if it not exists and return the sequence name so i can use it
create or replace
PROCEDURE CREATESEQ
(
TableName IN VARCHAR2
, CloumnName IN VARCHAR2
, pSeq_name out VARCHAR2
) AS
Seq_name varchar2(100);
vCounter number;
BEGIN
Seq_name:=tablename||cloumnname;
vCounter :=0;
-- dbms_output.put_line(Seq_name);
SELECT count(1)
INTO vCounter
FROM user_sequences
WHERE sequence_name = Seq_name;
IF vCounter > 0 THEN
pSeq_name:=seq_name;
else
EXECUTE IMMEDIATE 'create sequence '||Seq_name;
pSeq_name:=seq_name;
END IF ;
END CREATESEQ;
when i try to execute CREATESEQ procedure like this
DECLARE
TABLENAME VARCHAR2(200);
CLOUMNNAME VARCHAR2(200);
PSEQ_NAME VARCHAR2(200);
BEGIN
TABLENAME := 'Sections';
CLOUMNNAME := 'SectionID';
CREATESEQ(
TABLENAME => TABLENAME,
CLOUMNNAME => CLOUMNNAME,
PSEQ_NAME => PSEQ_NAME
);
:PSEQ_NAME := PSEQ_NAME;
END;
i get this error
ORA-01031: insufficient privileges
ORA-06512: at "TRAINING_AKHADIER.CREATESEQ", line 23
ORA-06512: at line 9
appreciate any suggestion
Upvotes: 2
Views: 2391
Reputation: 4551
The user who calls this procedure needs to have CREATE_ANY_SEQUENCE granted to them by a user who has this privilege and the ability to grant it.
Effectively for a learning scenario:
Upvotes: 1