不知道为什么不支持这种,使用以下方式解决:
SET SERVEROUTPUT ON DECLARE v_sql VARCHAR2(1000); v_err_msg VARCHAR2(2000); BEGIN FOR table_rec IN (SELECT table_name FROM all_tables WHERE owner = 'INTERFACE') LOOP BEGIN v_sql := 'GRANT SELECT ON INTERFACE."' || table_rec.table_name || '" TO c##wolf'; EXECUTE IMMEDIATE v_sql; DBMS_OUTPUT.PUT_LINE('已成功授权表: ' || table_rec.table_name); EXCEPTION WHEN OTHERS THEN v_err_msg := SQLERRM; DBMS_OUTPUT.PUT_LINE('授权失败 - 表: ' || table_rec.table_name || ', 错误: ' || v_err_msg); END; END LOOP; END; /
可能的原因还是表名有小写。
评论0
暂时没有评论