用大小写改变会话语句
Alter session statement with case
为了在有或没有调试信息的情况下重新编译 SQL*PLUS 脚本中的模式,我有以下代码:
define debug_compile = true
alter session set plsql_optimize_level = case when &&debug_compile = true then 1 else 2 end;
alter session set plsql_debug = &&debug_compile;
exec dbms_utility.compile_schema(schema => 'MYSCHEMA');
似乎 case
语句不允许与 alter session
命令一起使用。
除了引入另一个变量的明显方式之外 - 是否有一种替代方法可以根据变量 debug_compile
?
设置优化级别
有点乱,但是你可以使用动态SQL:
define debug_compile = true
alter session set plsql_debug = &&debug_compile;
begin
execute immediate 'alter session set plsql_optimize_level = '
|| case when &&debug_compile then 1 else 2 end;
end;
/
exec dbms_utility.compile_schema(schema => 'MYSCHEMA');
= true
有点多余,所以我删除了它。
为了在有或没有调试信息的情况下重新编译 SQL*PLUS 脚本中的模式,我有以下代码:
define debug_compile = true
alter session set plsql_optimize_level = case when &&debug_compile = true then 1 else 2 end;
alter session set plsql_debug = &&debug_compile;
exec dbms_utility.compile_schema(schema => 'MYSCHEMA');
似乎 case
语句不允许与 alter session
命令一起使用。
除了引入另一个变量的明显方式之外 - 是否有一种替代方法可以根据变量 debug_compile
?
有点乱,但是你可以使用动态SQL:
define debug_compile = true
alter session set plsql_debug = &&debug_compile;
begin
execute immediate 'alter session set plsql_optimize_level = '
|| case when &&debug_compile then 1 else 2 end;
end;
/
exec dbms_utility.compile_schema(schema => 'MYSCHEMA');
= true
有点多余,所以我删除了它。