PLSQL Language Reference-PL/SQL語言基礎-條件編譯-條件編譯指令限制

LuiseDalian發表於2014-03-08

條件編譯指令限制

條件編譯指令不能出現在方案層次的使用者自定義的型別的宣告中。型別宣告指定了型別的屬性結構,這決定了依賴的型別的屬性結構和依賴的表的列結構。

注意oracle建議只使用alter type來改變型別的屬性結構。

SQL解析器對PL/SQL單元中的第1個條件編譯指令的位置有約束:

n  在包規範、包體、型別體、沒有引數的方案層次的子程式,第1個條件編譯指令不能出現在ISAS之前。

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個條件編譯指令不能出現在第1BEGINDECLARE之前。

n  如果匿名塊中包含佔位符,則佔位符不能出現在條件編譯指令之中。

BEGIN

    :n := 1;        -- 佔位符有效使用

    $IF ... $THEN

        :n := 1;    -- 佔位符無效使用

    $END

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/17013648/viewspace-1103466/,如需轉載,請註明出處,否則將追究法律責任。

相關文章