plsql基础(我们似曾相识系列2)
1,赋值
在plsql中的赋值符号是::=
2,特殊一点的符号
1 (..)两点在plsql中是范围运算符,在loop中会用到。
2 字符连接符号是用:||
3,字符和数字运算注意点
空值加数字仍是空值: NULL + < 数字 > = NULL
空值加(连接)字符,结果为字符: NULL || < 字符串 > = < 字符串 >
4,类型的转换
char转换成number:v_total := TO_NUMBER( ‘ 100.0 ’ ) + sal;
number转换成char:v_comm := TO_CHAR( ‘ 123.45 ’ ) || ’ ’ ;
字符转换成日期:v_date := TO_DATE ('2001.07.03','yyyy.mm.dd') ;
日期转换成字符:v_to_day := TO_CHAR( SYSDATE , 'yyyy.mm.dd hh24:mi:ss') ;
5,IF语句
注意点有一个就是:else if 要写成:elsif。
6,CASE语句
CASE selector
WHEN expression1 THEN result1
WHEN expression2 THEN result2
WHEN expressionN THEN resultN
[ ELSE resultN+1]
END;
例:
DECLARE
V_grade char(1) := UPPER( ‘ &p_grade ’ );
V_appraisal VARCHAR2(20);
BEGIN
V_appraisal :=
CASE v_grade
WHEN ‘ A ’ THEN ‘ Excellent ’
WHEN ‘ B ’ THEN ‘ Very Good ’
WHEN ‘ C ’ THEN ‘ Good ’
ELSE ‘ No such grade ’
END;
DBMS_OUTPUT.PUT_LINE( ‘ Grade: ‘ ||v_grade|| ’ Appraisal: ‘ || v_appraisal);
END;
7,循环
第一种:
LOOP
要执行的语句 ;
E XIT WHEN < 条件语句 > /* 条件满足,退出循环语句 */
END LOOP;
DECLARE
int NUMBER(2) :=0;
BEGIN
LOOP
int := int + 1;
DBMS_OUTPUT.PUT_LINE('int 的当前值为 :'||i nt );
EXIT WHEN int =10;
END LOOP;
END;
第二种:
WHILE < 布尔表达式 > LOOP
DECLARE
x NUMBER;
BEGIN
x:= 1;
WHILE x<10 LOOP
DBMS_OUTPUT.PUT_LINE(' X 的当前值为 :'|| x );
x:= x+1;
END LOOP;
END ;
第三种:
FOR 循环计数器 IN [ REVERSE ] 下限 .. 上限 LOOP
要执行的语句 ;
END LOOP;
可以使用 EXIT 退出循环。
BEGIN
FOR i nt in 1..10 LOOP
DBMS_OUTPUT.PUT_LINE('i nt 的当前值为 : '||i nt );
END LOOP;
END;
8,GOTO
<<label>> /* 标号是用 << >> 括起来的标识符 */
例
DECLARE
V_counter NUMBER := 1;
BEGIN
LOOP
DBMS_OUTPUT.PUT_LINE('V_counter 的当前值为 :'||V_counter);
V_counter := v_counter + 1;
IF v_counter > 10 THEN
GOTO l_ENDofLOOP;
END IF;
END LOOP;
<<l_ENDofLOOP>>
DBMS_OUTPUT.PUT_LINE('V_counter 的当前值为 :'||V_counter);
END ;
9,关于 NULL
在 PL/SQL 程序中,可以用 null 语句来说明 “ 不用做任何事情 ” 的意思,相当于一个占 位
符,可以使某些语句变得有意义,提高程序的可读性。如:
DECLARE
. . .
BEGIN
…
IF v_num IS NULL THEN
GOTO print1;
END IF;
…
<<print1>>
NULL; -- 不需要处理任何数据
END;
低头做事,抬头做人。
浙公网安备 33010602011771号