SUBSTR(v_str,m,n);
这就是一个合法的表达式。在PL/SQL中,唯一不能作为表达式的SQL函数是DECODE函数,因为,在PL/SQL中,已经有了IF-THEN-END语句可以替代它。
表达式之间还可以通过逻辑运算符连接起来。这一点也是比较简单的。
赋值语句
赋值语句上面已经见到了,通过赋值运算符:=实现赋值操作。因此,PL/SQL中的等于使用=实现的,不同于C语言中的==。
条件语句
条件语句无非是if语句及其各种变种。PL/SQL的格式稍微有点不同,最简单的形式如下:
IF(...) THEN
--DO STH
ELSE
--DO STH ELSE
END IF;
这是最简单的一种形式。C语言中还有else if的形式,PL/SQL中也有,如下:
IF () THEN
--A
ELSIF () THEN
--B
ELSE
--C
END IF;
使用上就和别的语言没有什么差别,只是初学的时候需要注意一下写法格式
循环
循环是 编程语言中非常重要的一种结构,它用于对一组操作对象执行某一组相同的操作。循环有很多种不同的形式,下面一一介绍:
形式1:
LOOP
--做若干操作
EXIT WHEN ...;--什么时候退出循环
END LOOP;
第一部分的例子中就用到了这种形式的循环了。
形式2:
LOOP
--做若干操作
IF ...--什么时候退出循环
THEN
EXIT;
END IF;
END LOOP;
和形式1其实是等价的
形式3:while循环
WHILE(v_i < 10)
LOOP
----做若干操作
v_i := v_i + 1;
END LOOP;
形式4:数值FOR循环
FOR v_i IN 1..10
LOOP
--做一些操作
形式5:游标FOR循环
这一部分,我们在后面讲到游标的时候再讲。
下面,我们先用四种形式打印数字1-10,代码如下:
--形式1
DECLARE
v_limit number(2) := 1;
BEGIN
LOOP
DBMS_OUTPUT.PUT_LINE(v_limit);
v_limit := v_limit + 1;
EXIT WHEN v_limit > 10;
END LOOP;
END;
/
--形式2
DECLARE
v_limit number(2) := 1;
BEGIN
LOOP
IF v_limit > 10
THEN
EXIT;
END IF;
DBMS_OUTPUT.PUT_LINE(v_limit);
v_limit := v_limit + 1;
END LOOP;
END;
/
--形式3
DECLARE
v_limit number(2) := 1;
BEGIN
WHILE v_limit <= 10
LOOP
DBMS_OUTPUT.PUT_LINE(v_limit);
v_limit := v_limit + 1;
END LOOP;
END;
/
--形式4
DECLARE
v_limit number(2) := 1;
BEGIN
FOR v_limit IN 1..10
LOOP
DBMS_OUTPUT.PUT_LINE(v_limit);
END LOOP;
END;
/
PS:
1.运行上面的PL/SQL程序可能会没有输出,这是因为 Oracle默认没有打开serveroutput选项,只需要在SQL PLUS中执行:
SET SERVEROUTPUT ON;
2.上面代码片段后面的/不是代码本身的内容,而是让SQLPLUS立刻运行这段代码的一个操作。
关于游标相关的内容,下一篇博客专门讨论。
作者 wawlian说