PL/SQL小結

ljm0211發表於2012-06-20
在pl/sql中定義包的過程中,型別定義要寫在包頭裡,賦值語句寫在begin。。end中。
定義陣列型別的方法:
      TYPE TYPE_Array_S IS TABLE of NUMBER(14,4);
遊標定義:
      CURSOR result_cursor IS
    SELECT expression FROM KEVINLLI_24 WHERE pvar1=a_exp(1) AND pvar2=a_exp(2) AND pvar3=a_exp(3) AND pvar4=a_exp(4);
遊標使用前要open cursor_1;使用後close cursor_1;
判斷cursor%found或者cursor%notfound時,要先FETCH result_cursor INTO v_exp_cur;
    FOR result_rec IN result_cursor LOOP    
     print(result_rec.expression);
    END LOOP ;
如上for語句中有開啟遊標和關閉遊標的過程,所以在使用for語句前遊標應該是關閉的,不然會出錯誤。
      空字串sub='';用length函式得不到長度的返回值,可以將空字串賦值空格,如:sub=' ';這樣可以用length函式取得長度為1;
      函式或過程引數如果沒有in,out屬性,預設為in,所以在函式或過程中不可以給那個引數賦值,否則會出錯;要給引數賦值,可以把它的屬性宣告為in out;如:
PROCEDURE Test_24(
   a_num IN OUT TYPE_Array_S,
   v_n IN OUT NUMBER,
   v_expression IN OUT VARCHAR2
   )
陣列作為一個函式的引數時,不應該有括號;如:
   ELSIF result_cursor%NOTFOUND THEN
   Test_24(a_num,v_n,v_expression);--其中a_num是陣列
    CLOSE result_cursor;
    OPEN result_cursor;

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

相關文章