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.