编者按:
人,一半是天使,一半是魔鬼。
最好的学习是实践加上看官方文档。官方文档中的代码例更是精华和重点所在。
IT行业如此,编程如此,Oracle PL/SQL的学习更是如此。
本系列以摘自《Database PL/SQL Language Reference》的PL/SQL代码例为主进行介绍。
【免责声明】本公众号文章仅代表个人观点,与任何公司无关。

编辑|SQL和数据库技术(ID:SQLplusDB)
Oracle PL/SQL例
Oracle PL/SQL编程基础
Oracle PL/SQL例2:处理查询的结果行(基础循环)
Oracle PL/SQL例3:使用双引号
Oracle PL/SQL例4:文字(Literals)换行的处理
Oracle PL/SQL例5:注释
Oracle PL/SQL例6:声明变量/常量
Oracle PL/SQL例7:%TYPE 属性
例1:使用名字引用标识符
DECLAREa INTEGER; -- DeclarationBEGINa := 1; -- Reference with simple nameEND;/
例2:标识符的可见范围
-- Outer block:DECLAREa CHAR; -- Scope of a (CHAR) beginsb REAL; -- Scope of b beginsBEGIN-- Visible: a (CHAR), b-- First sub-block:DECLAREa INTEGER; -- Scope of a (INTEGER) beginsc REAL; -- Scope of c beginsBEGIN-- Visible: a (INTEGER), b, cNULL;END; -- Scopes of a (INTEGER) and c end-- Second sub-block:DECLAREd REAL; -- Scope of d beginsBEGIN-- Visible: a (CHAR), b, dNULL;END; -- Scope of d ends-- Visible: a (CHAR), bEND; -- Scopes of a (CHAR) and b end/
例3:引用子程序
CREATE OR REPLACE PROCEDURE check_credit (credit_limit NUMBER) ASrating NUMBER := 3;FUNCTION check_rating RETURN BOOLEAN ISrating NUMBER := 1;over_limit BOOLEAN;BEGINIF check_credit.rating <= credit_limit THEN -- reference global variableover_limit := FALSE;ELSEover_limit := TRUE;rating := credit_limit; -- reference local variableEND IF;RETURN over_limit;END check_rating;BEGINIF check_rating THENDBMS_OUTPUT.PUT_LINE('Credit rating over limit (' || TO_CHAR(credit_limit) || '). '|| 'Rating: ' || TO_CHAR(rating));ELSEDBMS_OUTPUT.PUT_LINE('Credit rating OK. ' || 'Rating: ' || TO_CHAR(rating));END IF;END;/
输出:
SQL> set serverout onSQL> BEGIN2 check_credit(1);3 END;4Credit rating over limit (1). Rating: 3PL/SQL 过程已成功完成。
例4:不同单元的引用
SQL> DECLARE2 PROCEDURE p3 IS4 x VARCHAR2(1);5 BEGIN6 x := 'a'; -- Assign the value 'a' to x7 DBMS_OUTPUT.PUT_LINE('In procedure p, x = ' || x);8 END;910 PROCEDURE q11 IS12 x VARCHAR2(1);13 BEGIN14 x := 'b'; -- Assign the value 'b' to x15 DBMS_OUTPUT.PUT_LINE('In procedure q, x = ' || x);16 END;1718 BEGIN19 p;20 q;21 END;22 /In procedure p, x = aIn procedure q, x = bPL/SQL 过程已成功完成。
SQL> <<echo>>2 DECLARE3 x NUMBER := 5;45 PROCEDURE echo AS6 x NUMBER := 0;7 BEGIN8 DBMS_OUTPUT.PUT_LINE('x = ' || x);9 DBMS_OUTPUT.PUT_LINE('echo.x = ' || echo.x);10 END;1112 BEGIN13 echo;14 END;15 /x = 0echo.x = 0PL/SQL 过程已成功完成。
文章转载自SQL和数据库技术,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




