初学Oracle PL/SQL 【笔记一】

1.PL/SQL 语句块包含三部分:声明部分、可执行部分以及异常处理部分。可执行部分是语句块中唯一要求必须存在的部分。PL/SQL 语句块的结构通常如下所示:

DECLARE

    Declaration statement

BEGIN

    Exceptable statement

EXCEPTION

    Exception-handling statements

END;

 

 

任何PL/SQL 语句块中可执行部分必须以保留字BEGIN开始,以保留字END结束。

 

 

PL/SQL 并不是独立的编程语言,只是Oracle 编程环境的一个工具。因此它不具备从用户接收输入的功能。但是 在SQL*Plus 中,借助于替代变量 ,PL/SQL 语句块可以接收输入信息。替代变量不能用于输出值,因为没有给它们分配任何存储空间。在PL/SQL 语句块发送到数据库之前,SQL*Plus 会使用实际值来替换这些替代变量。通常而言,替代变量的前缀是&或者&&。

begin
  dbms_output.put_line('Today is '||'&sv_day');
  dbms_output.put_line('Tomorrow will be '||'&sv_day');

end;

 

 

【COALESCE】 函数会把表达式列表中每个表达式与NULL进行比较,并返回第1个非NULL表达式的值。当所有的表达式的计算结果都是NULL时,COALESCE函数返回NULL。

   COALESCE (expression1,expression2,..., expressionN )

【NVL】 函数 从两个表达式返回一个非 null 值。

NVL(eExpression1, eExpression2)
参数 eExpression1, eExpression2
如果 eExpression1 的计算结果为 null 值,则 NVL( ) 返回 eExpression2。如果 eExpression1 的计算结果不是 null 值,则返回 eExpression1。eExpression1 和 eExpression2 可以是任意一种数据类型。如果 eExpression1 与 eExpression2 的结果皆为 null 值,则 NVL( ) 返回 .NULL.。
返回值类型 :字符型、日期型、日期时间型、数值型、货币型、逻辑型或 null 值
说明 :在不支持 null 值或 null 值无关紧要的情况下,可以使用 NVL( ) 来移去计算或操作中的 null 值。

select nvl(a.name,'空得') as name from student a join school b on a.ID=b.ID

注意:两个参数得类型要匹配

 

【CASH】语句     case 语句存在 两种 形式:1.CASE和搜索式2.CASE。

              1.CASE语句:

                      DECLARE

                           v_num NUMBER :=&sv_user_num;

                           v_num_flag NUMBER;

                      BEGIN

                           v_num_flag := MOD(v_num,2);

                           CASE v_num_flag

                              WHEN   0   THEN

                              DBMS_OUTPUT.PUT_LINE (v_num || ' is even number' );

                           else

                              DBMS_OUTPUT.PUT_LINE (v_num || ' is odd number' );

                           END CASE;

                       END;

 

             2.搜索式CASE 语句

 

                      DECLARE

                           v_num NUMBER :=&sv_user_num;

                      BEGIN

                           CASE

                              WHEN   MOD(v_num,2) :=  0   THEN

                              DBMS_OUTPUT.PUT_LINE (v_num || ' is even number' );

                           else

                              DBMS_OUTPUT.PUT_LINE (v_num || ' is odd number' );

                           END CASE;

                       END;

 

【CASE】    表达式        

                   如:

                      DECLARE

                           v_num NUMBER :=&sv_user_num;

                           v_num_flag NUMBER;

                           v_result   VARCHAR2(30);

                      BEGIN

                           v_num_flag := MOD(v_num,2);

                           v_result :=

                           CASE v_num_flag

                              WHEN   0   THEN    (v_num || ' is even number' )

                           else   v_num || ' is odd number'

                           END ;

                         DBMS_OUTPUT.PUT_LINE (v_result );

                       END;

 

 

CASE 语句与CASE 表达式的区别: 在CASE 语句中,WHEN 和ELSE 子句都包含一个可以执行的语句,每个可执行语句的结尾处都是分号。 在CASE 表达式中,WHEN 和 ELSE 子句所包含的表达式的结尾处不是分号,分号只出现在保留字END的后面,保留字END终止CASE 表达式,而CASE 语句以保留字END CASE终止。

 

 

NULLIF 函数  会比较两个表达式。如果两者相同,函数会返回NULL,否则的话,返回第一个表达式的值。NULLIF(expression1,expression2)     等价于CASE 表达式:

CASE

       WHEN   expression1 = expression2 THEN NULL

       ELSE    expression1

 END;

 

     注:不能把字面值NULL赋予expression1.

 

 

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

春哥撩编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值