PL/SQL如何查看当前schema及修改默认schema,附代码报错修复需求
报错根因
- Oracle PL/SQL 块内不支持直接运行DDL语句,
ALTER SESSION属于DDL类型,必须通过动态SQL语法执行 - 代码中
"PRODUCTION"错误使用了双引号,Oracle规定字符串字面量需用单引号包裹,双引号仅用于标记大小写敏感的对象名
修复后完整代码
DECLARE v_current_schema varchar2(30); BEGIN v_current_schema := SYS_CONTEXT('USERENV', 'CURRENT_SCHEMA'); IF v_current_schema <> 'PRODUCTION' THEN -- 通过动态SQL执行ALTER语句 EXECUTE IMMEDIATE 'ALTER SESSION SET CURRENT_SCHEMA = PRODUCTION'; END IF; END; /
注意事项
- 执行该代码的用户需要提前授予
ALTER SESSION系统权限,以及PRODUCTIONschema下对应对象的访问权限 - 如果你创建
PRODUCTIONschema时明确指定了大小写敏感(创建时加了双引号),可以将动态SQL调整为EXECUTE IMMEDIATE 'ALTER SESSION SET CURRENT_SCHEMA = "PRODUCTION"',外层用单引号包裹整条SQL,内层双引号标记大小写敏感的schema名即可
内容的提问来源于stack exchange,提问作者Murat DİRİM
相关产品推荐
相关产品推荐

