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

Oracle PL/SQL例10:表达式

386

编者按:

越是在动荡的情况下,越要建立自己的内心之锚,思考自己本身的特质。


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

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. 连接运算符

例1:

    DECLARE
    x VARCHAR2(4) := 'suit';
    y VARCHAR2(4) := 'case';
    BEGIN
    DBMS_OUTPUT.PUT_LINE (x || y);
    END;
    /
     结果:
     suitcase

    例2:

      BEGIN
      DBMS_OUTPUT.PUT_LINE ('apple' || NULL || NULL || 'sauce');
      END;
      /
      输出:
      applesauce

      2. 运算符的优先级

      下表的运算符的优先级由高到低。

      可以使用圆括号控制运算符的优先级别。

      例1:

        DECLARE
        a INTEGER := 1+2**2;
        b INTEGER := (1+2)**2;
        BEGIN
        DBMS_OUTPUT.PUT_LINE('a = ' || TO_CHAR(a));
        DBMS_OUTPUT.PUT_LINE('b = ' || TO_CHAR(b));
        END;
        /
        输出:
        a = 5
        b = 9

        例2:

          DECLARE
          a INTEGER := ((1+2)*(3+4))/7;
          BEGIN
          DBMS_OUTPUT.PUT_LINE('a = ' || TO_CHAR(a));
          END;
          /
          输出:
          a = 3

          例3:通过括号增加可读性

            DECLARE
            a INTEGER := 2**2*3**2;
            b INTEGER := (2**2)*(3**2);
            BEGIN
            DBMS_OUTPUT.PUT_LINE('a = ' || TO_CHAR(a));
            DBMS_OUTPUT.PUT_LINE('b = ' || TO_CHAR(b));
            END;
            /
            输出:
            a = 36
            b = 36


            例4:

              DECLARE
              salary NUMBER := 60000;
              commission NUMBER := 0.10;
              BEGIN
              -- Division has higher precedence than addition:

              DBMS_OUTPUT.PUT_LINE('5 + 12 / 4 = ' || TO_CHAR(5 + 12 / 4));
              DBMS_OUTPUT.PUT_LINE('12 / 4 + 5 = ' || TO_CHAR(12 / 4 + 5));

              -- Parentheses override default operator precedence:

              DBMS_OUTPUT.PUT_LINE('8 + 6 / 2 = ' || TO_CHAR(8 + 6 / 2));
              DBMS_OUTPUT.PUT_LINE('(8 + 6) / 2 = ' || TO_CHAR((8 + 6) / 2));

              -- Most deeply nested operation is evaluated first:

              DBMS_OUTPUT.PUT_LINE('100 + (20 / 5 + (7 - 3)) = '
              || TO_CHAR(100 + (20 / 5 + (7 - 3))));

              -- Parentheses, even when unnecessary, improve readability:

              DBMS_OUTPUT.PUT_LINE('(salary * 0.05) + (commission * 0.25) = '
              || TO_CHAR((salary * 0.05) + (commission * 0.25))
              );

              DBMS_OUTPUT.PUT_LINE('salary * 0.05 + commission * 0.25 = '
              || TO_CHAR(salary * 0.05 + commission * 0.25)
              );
              END;
              /

              输出:
              5 + 12 / 4 = 8
              12 / 4 + 5 = 8
              8 + 6 / 2 = 11
              (8 + 6) / 2 = 7
              100 + (20 / 5 + (7 - 3)) = 108
              (salary * 0.05) + (commission * 0.25) = 3000.025
              salary * 0.05 + commission * 0.25 = 3000.025

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

              评论