暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle PL/SQL例9:为变量赋值

560

编者按:

四十不惑是要有自己的判断力。根据自身的状况,知道对自己而言,什么是最重要的!


最好的学习是实践加上看官方文档。官方文档中的代码例更是精华和重点所在。

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 属性
Oracle PL/SQL例8:标识符引用

变量赋值的方法主要包括如下方法:

    1. 通过赋值语句为变量赋值
    2. 使用SELECT INTOFETCH语句为变量赋值
    3. 将变量作为OUTIN OUT参数传递给子程序,然后在子程序内赋值。

    1. 通过赋值语句为变量赋值

      variable_name := expression;

      例:

        DECLARE  -- You can assign initial values here
        wages NUMBER;
        hours_worked NUMBER := 40;
        hourly_salary NUMBER := 22.50;
        bonus NUMBER := 150;
        country VARCHAR2(128);
        counter NUMBER := 0;
        done BOOLEAN;
        valid_id BOOLEAN;
        emp_rec1 employees%ROWTYPE;
        emp_rec2 employees%ROWTYPE;
        TYPE commissions IS TABLE OF NUMBER INDEX BY PLS_INTEGER;
        comm_tab commissions;

        BEGIN -- You can assign values here too
        wages := (hours_worked * hourly_salary) + bonus;
        country := 'France';
        country := UPPER('Canada');
        done := (counter > 100);
        valid_id := TRUE;
        emp_rec1.first_name := 'Antonio';
        emp_rec1.last_name := 'Ortiz';
        emp_rec1 := emp_rec2;
        comm_tab(5) := 20000 * 0.15;
        END;
        /

        2. 使用SELECT INTO或FETCH语句为变量赋值

          SELECT select_item [, select_item ]... 
          INTO variable_name [, variable_name ]...
          FROM table_name;

          例:

            DECLARE
            bonus NUMBER(8,2);
            BEGIN
            SELECT salary * 0.10 INTO bonus
            FROM employees
            WHERE employee_id = 100;
            END;


            DBMS_OUTPUT.PUT_LINE('bonus = ' || TO_CHAR(bonus));
            /
            结果:
            bonus = 2400

            3. 将变量作为OUT或IN OUT参数传递给子程序,然后在子程序内赋值。

              DECLARE
              emp_salary NUMBER(8,2);

              PROCEDURE adjust_salary (
              emp NUMBER,
              sal IN OUT NUMBER,
              adjustment NUMBER
              ) IS
              BEGIN
              sal := sal + adjustment;
              END;

              BEGIN
              SELECT salary INTO emp_salary
              FROM employees
              WHERE employee_id = 100;

              DBMS_OUTPUT.PUT_LINE
              ('Before invoking procedure, emp_salary: ' || emp_salary);

              adjust_salary (100, emp_salary, 1000);

              DBMS_OUTPUT.PUT_LINE
              ('After invoking procedure, emp_salary: ' || emp_salary);
              END;
              /
              结果:
              Before invoking procedure, emp_salary: 24000
              After invoking procedure, emp_salary: 25000


              文章转载自SQL和数据库技术,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

              评论