国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > Oracle > 正文

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

2024-08-29 13:56:23
字體:
供稿:網(wǎng)友

IN主要用于傳入?yún)?shù),可以是變量,常量,表達(dá)式,在子程序內(nèi)部不能改變其值.

復(fù)制代碼 代碼如下:


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模式用于返回值,必須傳入變量調(diào)用,變量的初始的值不會(huì)傳給形式參數(shù),如<<1>>所示.
形參的值在子程序返回時(shí)(不是在形式參數(shù)改變時(shí))才copy給實(shí)參, ,如<<2>>所示,如果在 返回之前發(fā)生異常,實(shí)際參數(shù)的值不會(huì)被改變.

復(fù)制代碼 代碼如下:


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

復(fù)制代碼 代碼如下:


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;

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 隆德县| 洪湖市| 宁河县| 娄底市| 辛集市| 工布江达县| 德令哈市| 英山县| 五大连池市| 泰州市| 河源市| 获嘉县| 邵阳县| 棋牌| 育儿| 腾冲县| 长沙市| 新乡市| 五原县| 洛南县| 正阳县| 余姚市| 巩义市| 石阡县| 准格尔旗| 永泰县| 泾川县| 九江市| 甘孜县| 若羌县| 莎车县| 汝南县| 兴和县| 青川县| 横峰县| 庐江县| 唐海县| 色达县| 通化县| 浙江省| 伊春市|