oracle pl/sql编程基础笔记

一、简介

pl/sql可以一次性发送多条sql语句到数据库,同时具有变量,流程控制,是结构化与过程化的结合体。

1.语法结构
declare
--声明部分:定义变量,常量,游标
begin
--程序编写,sql语句(执行部分)
exception
--处理异常
end;
2.第一个块
declare
 v_num NUMBER :=10;
 BEGIN 
  DBMS_OUTPUT.PUT_LINE('This string breaks
  here.'||V_NUM);
 END;

注意:默认情况下DBMS_OUTPUT.PUT_LINE无法使用,需要设置set serveroutput on;

3.定义键盘输入
declare
 v_num NUMBER :=10;
 BEGIN 
 v_num:=&v_num;
  DBMS_OUTPUT.PUT_LINE('This string breaks
  here.'||V_NUM);
 END;
4.查询数据字典所有关键字
select *from v$reserved_words;
5.声明变量语法
变量名称[constant] 类型 [not null] [:=value]

注意:pl/sql中变量名不区分大小写。

6.使用%type声明变量(变量与表中某列类型一样)
DECLARE
    v_eno       emp.empno%TYPE ;    -- 与empno类型相同
    v_ename emp.ename%TYPE ;  -- 与ename类型相同
BEGIN
    DBMS_OUTPUT.put_line('请输入雇员编号:') ;
    v_eno := &empno ;               -- 由键盘输入雇员编号
    SELECT ename INTO v_ename FROM emp WHERE empno= v_eno ;
    DBMS_OUTPUT.put_line('编号为:' || v_eno || '雇员的名字为:'|| v_ename) ;
END ;
7.%rowtype(标记一行记录类型)
DECLARE
    emprow  emp%ROWTYPE;
BEGIN
    SELECT * INTO emprow FROM emp WHERE empno= 7369 ;
    DBMS_OUTPUT.put_line('编号为:' || emprow.empno || '雇员的名字为:'|| emprow.ename) ;
END ;

二、运算符

1.赋值运算符(变量:=表达式;)
2.连接运算符(||)
3.关系运算符(判断两个操作数据的大小,返回值为true或者false,如果有一个为null,最终结果也为null)
关系运算符:>,<,>=,<=,!=,<>
判断null:is null ,is not null
范围查询:between and
范围查询:in
模糊查询:like
4.逻辑运算符(and or not)

三、标量类型

1.数值型
2.字符型
3.日期型
4.大对象型
5.布尔型

四、程序结构

1.分支结构

如:

if condition then
meet the condition;
end if;
if condition then
meet the condition;
else
not meet the condition
end if ;
if condition then 
meet the condition;
elseif condition then 
meet the condition
...
else 
not meet the condition ;
end if;

注意:condition 可以使用regexp_like()函数正则验。也可以使用case when代替if语句。

2.循环结构
2.1.loop循环
loop
loop excute block;
exit when loop end condtion;
loop end condition alter;
end loop;
while(condition) loop
loop excute block;
loop end condition alter;
end loop;

例如

DECLARE
    v_i NUMBER := 1 ;   -- 定义一个变量,用于循环
BEGIN
    LOOP
        DBMS_OUTPUT.put_line('v_i = ' || v_i) ;
        EXIT WHEN v_i >= 3 ;
        v_i := v_i + 1 ;
    END LOOP ;
END ;
2.2.for循环
for loop_index in[reverse] start...end Loop
loop block;
end loop;

例如:

    v_i NUMBER := 1 ;   -- 定义一个变量,用于循环
BEGIN
    FOR v_i IN 1 .. 3 LOOP
        DBMS_OUTPUT.put_line('v_i = ' || v_i) ;
    END LOOP ;
END ;

降序:

DECLARE
    v_i NUMBER := 1 ;   -- 定义一个变量,用于循环
BEGIN
    FOR v_i IN REVERSE 1 .. 3 LOOP
        DBMS_OUTPUT.put_line('v_i = ' || v_i) ;
    END LOOP ;
END ;

注意:循环控制exit(退出循环),continue(退出本次循环)
五.内部程序块
六.异常处理

未完待续。。。。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容