条件编译指令限制
条件编译指令不能出现在方案层次的用户自定义的类型的声明中。类型声明指定了类型的属性结构,这决定了依赖的类型的属性结构和依赖的表的列结构。
注意:oracle建议只使用alter type来改变类型的属性结构。
SQL解析器对PL/SQL单元中的第1个条件编译指令的位置有约束:
n 在包规范、包体、类型体、没有参数的方案层次的子程序,第1个条件编译指令不能出现在IS或AS之前。
n 在具有最少一个参数的方案层次的子程序中,第1个条件编译指令不能出现在程序名后的(之前。
--正确的例子 CREATE OR REPLACE PROCEDURE my_proc ( $IF $$xxx $THEN i IN PLS_INTEGER $ELSE i IN INTEGER $END ) IS BEGIN NULL; END my_proc; |
n 在触发器或匿名块中,每1个条件编译指令不能出现在第1个BEGIN或DECLARE之前。
n 如果匿名块中包含占位符,则占位符不能出现在条件编译指令之中。
BEGIN :n := 1; -- 占位符有效使用 $IF ... $THEN :n := 1; -- 占位符无效使用 $END
|
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/17013648/viewspace-1103466/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/17013648/viewspace-1103466/