在执行态SQL时要显示授权GRANT CREATE TRIGGER TO "TEST" GRANT CREATE SEQUENCE TO "TEST"
还有我用的是system用户权限应该没问题。to: welyngj(不做老实人):你说的是什么意思
还有我用的是system用户权限应该没问题。to: welyngj(不做老实人):你说的是什么意思
grant resource,create any synonym to sdspadmin;
grant create trigger to sdspadmin grant权限指令,意思给sdspadmin加创建trigger 的权利
GRANT CREATE ANY SEQUENCE TO "sdspadmin"; GRANT CREATE ANY TRIGGER TO "sdspadmin";
create or replace procedure sdspadmin.pr_CreateIdentityColumn (tablename varchar2,columnname varchar2) as strsql varchar2(1000); begin strsql := 'create sequence seq_'||tablename||' minvalue 1 maxvalue 999999999999999999 start with 1 increment by 1 nocache'; GRANT CREATE ANY SEQUENCE TO "sdspadmin"; execute immediate strsql; GRANT CREATE ANY TRIGGER TO "sdspadmin"; strsql := 'create or replace trigger trg_'||tablename||' before insert on '||tablename||' for each row begin select seq_'||tablename||'.nextval into :new.'||columnname||' from dual; end'; execute immediate strsql; end; 是这样么? 不行啊
呵呵,不是这样的,源代码照旧,你用sqlplus登陆system帐号sql>GRANT CREATE ANY SEQUENCE TO "sdspadmin";sql>GRANT CREATE ANY TRIGGER TO "sdspadmin";然后重新编译就可以了
GRANT CREATE SEQUENCE TO "TEST"
grant权限指令,意思给sdspadmin加创建trigger 的权利
GRANT CREATE ANY TRIGGER TO "sdspadmin";
(tablename varchar2,columnname varchar2)
as
strsql varchar2(1000);
begin
strsql := 'create sequence seq_'||tablename||' minvalue 1 maxvalue 999999999999999999 start with 1 increment by 1 nocache';
GRANT CREATE ANY SEQUENCE TO "sdspadmin";
execute immediate strsql;
GRANT CREATE ANY TRIGGER TO "sdspadmin";
strsql := 'create or replace trigger trg_'||tablename||' before insert on '||tablename||' for each row begin select seq_'||tablename||'.nextval into :new.'||columnname||' from dual; end';
execute immediate strsql;
end;
是这样么?
不行啊