3 回答

TA貢獻1799條經驗 獲得超8個贊
前邊幾個是變量,就是in out那一堆
相當于你輸入和輸出的參數,而且輸入和輸出的參數只能每次調用一個
一個輸入參數你不可能一下輸入兩個
下邊is后邊那個
%TYPE屬性
在PL/SQL中可以將變量和常量聲明為內建或用戶定義的數據類型,以引用一個列名,同時繼承他的數據類型和大小。這種動態賦值方法是非常有用的,比如變量引用的列的數據類型和大小改變了,如果使用了%TYPE,那么用戶就不必修改代碼,否則就必須修改代碼。
例:
v_empno SCOTT.EMP.EMPNO%TYPE;
v_salary EMP.SALARY%TYPE;
不但列名可以使用%TYPE,而且變量、游標、記錄,或聲明的常量都可以使用%TYPE。這對于定義相同數據類型的變量非常有用。
其實說白了,就是后邊is定義的那個已經不是常規的變量了,相當于一個數組或者游標

TA貢獻1871條經驗 獲得超13個贊
oracle 過程中定義了in、out、in out三種參數模式,每個參數可以選擇其一。
in 是參數的默認模式,這種模式就是在程序運行的時候已經具有值,在程序體中值不會改變;
out模式定義的參數只能在過程體內部賦值,表示該參數可以將某個值傳遞回調用他的過程;
in out 表示高參數可以向該過程中傳遞值,也可以將某個值傳出去 。
舉個例子
create or replace procedure update_price(
p_product_id in NUMBER,
p_factor in NUMBER)
AS
.....
你在引用這個過程的時候給參數傳入值
exexute update_price(2,2.5);
這是定義的2個參數就得到了值,in模式下值不能變。
添加回答
舉報