PLSQL Language Reference-SQL資料型別-PLS_INTEGER的子型別SIMPLE_INTEGER

LuiseDalian發表於2014-03-09

PLS_INTEGER的子型別SIMPLE_INTEGER

SIMPLE_INTEGERPLS_INTEGER的最大的區別在於溢位語義。

如果確定一個變數不會賦空值,並且不需要進行溢位檢查,則最好定義為SIMPLE_INTEGER

1SIMPLE_INTEGER溢位語義

當且僅當表示式中的所有運算元都是SIMPLE_INTEGER型別時,PL/SQL使用2者的補運算且忽略溢位。值可能會發生正負改變

DECLARE

    n SIMPLE_INTEGER := 2147483645;

BEGIN

    FOR j IN 1..4 LOOP

        n := n + 1;

        DBMS_OUTPUT.PUT_LINE(TO_CHAR(n, 'S9999999999'));

    END LOOP;

    FOR j IN 1..4 LOOP

        n := n - 1;

        DBMS_OUTPUT.PUT_LINE(TO_CHAR(n, 'S9999999999'));

    END LOOP;

END;

2)具有SIMPLE_INTEGER和其它運算元的表示式

PL/SQL會隱式地將SIMPLE_INTEGER轉換為PLS_INTEGER NOT NULL

SIMPLE_INTEGER和其它型別以一種抑制某些優化從而對效能產生負面影響的方式混合時,PL/SQL編譯器會產生警告。

3)在SIMPLE_INTEGER範圍內的整數字面量

SIMPLE_INTEGER範圍內的整數字面量具有SIMPLE_INTEGER資料型別。然而為了向前相容,當在算術表示式中的所有運算元都是整數字面量的時候,PL/SQL會將它們轉換為PLS_INTEGER

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

相關文章