我正在尝试创建创建序列的过程(如果它不存在) 并返回序列名称,以便我可以使用它
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;
当我尝试像这样执行CREATESEQ程序时
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;
我收到此错误
ORA-01031:特权不足
ORA-06512:在“TRAINING_AKHADIER.CREATESEQ”第23行
ORA-06512:第9行
欣赏任何建议
答案 0 :(得分:1)
调用此过程的用户需要具有此权限且能够授予它的用户授予CREATE_ANY_SEQUENCE。
有效的学习方案: