Plsql 动态Sql,绑定问题
我有一个街区:Plsql 动态Sql,绑定问题,plsql,dynamic-sql,Plsql,Dynamic Sql,我有一个街区: DECLARE stmnt VARCHAR2(100); rol VARCHAR2(10); --role name tab_name VARCHAR2(10); --table name BEGIN rol := '&Role_name'; stmnt := 'create role ' || rol; EXECUTE IMMEDIATE stmnt; stmnt := 'grant :p on ' || '&tab_name' ||
DECLARE
stmnt VARCHAR2(100);
rol VARCHAR2(10); --role name
tab_name VARCHAR2(10); --table name
BEGIN
rol := '&Role_name';
stmnt := 'create role ' || rol;
EXECUTE IMMEDIATE stmnt;
stmnt := 'grant :p on ' || '&tab_name' || ' to ' || rol;
EXECUTE IMMEDIATE stmnt using '&Privilege';
END;
当我执行此块时,在重新设置特权选择后,Oracle会给我一个错误,即缺少或无效特权ORA-00990:缺少或无效特权
为什么不绑定变量?不能绑定Oracle名称,只能绑定数据值。改为这样做:
DECLARE
stmnt VARCHAR2(100);
rol VARCHAR2(10); --role name
tab_name VARCHAR2(10); --table name
BEGIN
rol := '&Role_name';
stmnt := 'create role ' || rol;
EXECUTE IMMEDIATE stmnt;
stmnt := 'grant &Privilege. on &tab_name. to ' || rol;
EXECUTE IMMEDIATE stmnt;
END;