最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
當前位置: 首頁 - 科技 - 知識百科 - 正文

Oracle子程序參數(shù)模式,IN,OUT,NOCOPY

來源:懂視網 責編:小采 時間:2020-11-09 09:25:18
文檔

Oracle子程序參數(shù)模式,IN,OUT,NOCOPY

Oracle子程序參數(shù)模式,IN,OUT,NOCOPY:Oracle 子程序參數(shù)模式主要有IN,OUT,NOCOPY,IN和OUT可以組合,OUT和NOCOPY也可以組合使用. IN主要用于傳入參數(shù),可以是變量,常量,表達式,在子程序內部不能改變其值. 代碼如下:DECLARE n NUMBER := 10; PROCEDURE do_somethin
推薦度:
導讀Oracle子程序參數(shù)模式,IN,OUT,NOCOPY:Oracle 子程序參數(shù)模式主要有IN,OUT,NOCOPY,IN和OUT可以組合,OUT和NOCOPY也可以組合使用. IN主要用于傳入參數(shù),可以是變量,常量,表達式,在子程序內部不能改變其值. 代碼如下:DECLARE n NUMBER := 10; PROCEDURE do_somethin

Oracle 子程序參數(shù)模式主要有IN,OUT,NOCOPY,IN和OUT可以組合,OUT和NOCOPY也可以組合使用.

IN主要用于傳入參數(shù),可以是變量,常量,表達式,在子程序內部不能改變其值.
代碼如下:


DECLARE
n NUMBER := 10;
PROCEDURE do_something (
n1 IN NUMBER) IS
BEGIN
dbms_output.put_line(n1); -- prints 10
--n1:=20; --illegal assignment.
END;
BEGIN
do_something(n);
do_something(20);
END;

OUT模式用于返回值,必須傳入變量調用,變量的初始的值不會傳給形式參數(shù),如<<1>>所示.
形參的值在子程序返回時(不是在形式參數(shù)改變時)才copy給實參, ,如<<2>>所示,如果在 返回之前發(fā)生異常,實際參數(shù)的值不會被改變.
代碼如下:

DECLARE
n NUMBER := 10;
PROCEDURE do_something (
n1 OUT NUMBER) IS
BEGIN
dbms_output.put_line('before assign: ' || n1); -- prints none <<1>>
n1:=20;
dbms_output.put_line('before return: ' || n); -- prints 10 <<2>>
END;
BEGIN
do_something(n);
dbms_output.put_line('after return: ' || n); -- prints 20
END;

NOCOPY模式用于限定OUT模式在調用時是不是以傳引用的方式進行(它只是一個編譯器暗示,不一定總是起作用),默認情況下,OUT模式的參數(shù)是以傳值的方式進行調用的.
IN主要用于傳入參數(shù)的,雖然n2 := 20被調用,但是要到返回的時候才生效.如<<1>>所示.
NOCOPY是傳引用,會在賦值的時候立即生效 ,如<<2>>所示,如果在 返回之前發(fā)生異常,實際參數(shù)的值也會被改變.
由于OUT參數(shù)在 子程序返回的時候會將值copy到實際參數(shù),所以調用完后n的值為20,如<<3>>所示.
代碼如下:

DECLARE
n NUMBER := 10;
PROCEDURE do_something (
n1 IN NUMBER,
n2 IN OUT NUMBER,
n3 IN OUT NOCOPY NUMBER) IS
BEGIN
n2 := 20;
dbms_output.put_line(n1); -- prints 10<<1>>
n3 := 30;
dbms_output.put_line(n1); -- prints 30 <<2>>
END;
BEGIN
do_something(n, n, n);
dbms_output.put_line(n); -- prints 20 <<3>>
END;

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

Oracle子程序參數(shù)模式,IN,OUT,NOCOPY

Oracle子程序參數(shù)模式,IN,OUT,NOCOPY:Oracle 子程序參數(shù)模式主要有IN,OUT,NOCOPY,IN和OUT可以組合,OUT和NOCOPY也可以組合使用. IN主要用于傳入參數(shù),可以是變量,常量,表達式,在子程序內部不能改變其值. 代碼如下:DECLARE n NUMBER := 10; PROCEDURE do_somethin
推薦度:
標簽: in out 程序
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top