3 回答

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超4個(gè)贊
開頭部分聲明的是這個(gè)存儲(chǔ)過(guò)程的參數(shù),is部分聲明的是存儲(chǔ)過(guò)程內(nèi)部使用的變量。相當(dāng)于程序中函數(shù)的參數(shù)和函數(shù)的內(nèi)部變量的關(guān)系。

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

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