【个人笔记】PL/SQL 基本编程
来源:互联网 发布:sql有哪几级权限 编辑:程序博客网 时间:2024/05/19 13:23
PL/SQL 编程
for update [of] [columnName]
PL/SQL 块包括 :变量/异常声明块、代码执行块、异常处理块
基本格式如下:
DECLARE [变量/异常声明块];BEGIN [代码执行块][EXCEPTION [异常处理块]]END;
- 声明变量和常量的语法
Identifier [CONSTANT] DataType [NOT NULL] [:= | DEFAULT expr]; 如:relt number(5) default 5; relt constant number(4) := 3;
- 给变量赋值的方式
使用赋值语句 :=
如: [VariableName] [DataType] := [value]; [VariableName] := [value];
使用 SELECT INTO 语句 如:select [A ColumnName] into [A VariableName] from [TableName] where [Conditions]; --要求返回值必须是单行单列的值
3. LOB 数据类型
DBMS_LOB.READ(clob_var,amount,offset,output_var); clob_var 存放CLOB数据的变量 output_var 用于存放从CLOB变量中截取出的值 amount 要读取的字符数 offset (相对起始位置)偏移量
- 关于 %TYPE 与 %ROWTYPE 的使用
%TYPE 引用变量和数据库列的数据类型
%ROWTYPE 提供表示表中一行的记录类型
如: variable Table.Column%TYPE; rowvariable Table%ROWTYPE;
- 关于逻辑比较
= <> != < > <= >=
- 条件控制语句
- IF if [Condition expr] then elif [Commands] ... else [Commands] end if;
- CASE case '&variable' when [value] then [Commands]; ... else [Commands]; end case;
- 循环控制语句
- LOOP 无条件循环 loop [Commands]; end loop;
- WHILE 根据条件循环 while [Condition expr] loop [Commands]; end loop;
- FOR 循环固定的次数 for [variable] in [reverse] [variable array | value1..value2] loop [Commands]; end loop;
- 顺序控制语句
- GOTO 无条件跳转 BEGIN <<FLAG>> [Commands]; goto QUIT; goto FLAG; <<QUIT>> NULL; END;
- NULL 空语句 在任何语句块都可使用 NULL; 来充当一条语句
- 动态 SQL
指在PL/SQL程序执行时生成的SQL语句,编译程序对动态SQL不做处理,而是在程序运行时动态构造语句、对语句进行语法分析并执行。
DDL 语句命令和会话控制语句不能在PL/SQL中直接使用,但是可以通过动态SQL来执行。
基本语法如下:
EXECUTE IMMEDIATE dynamic_sql_string [INTO define_variable_list] [USING bind_argument_list]; -- list中有多个变量,用 ',' 分隔
如:
declare sql_str varchar2(100); sid student.sid%type; sname student.sname%type; begin sid := '&sid'; sname := '&sname'; execute immediate 'insert into student(sid,sname) values(:sid,:sname)' using sid,sname; commit; end;
--以上SQL语句中 values() 里的 ‘:sid’ 表示的是一个变量(‘sid’是变量名,该变量名可随意,但不可省略),该变量的值顺序对应 using 后跟着参数列表里的值。
10. 异常
在运行程序时出现的错误叫做异常,发生异常后,将停止执行,控制权转移到PL/SQL块的异常处理部分。
抛出异常的方式: -使用 RAISE 关键字异常有两种类型:预定义异常、用户定义异常 -预定义异常 TOO_MANY_ROWS 等 -用户定义异常 定义异常的方式与定义变量的方式相同
exceptionname EXCEPTION; --EXCEPTION 是异常类型
如: myexception EXCEPTION;其他: others 表示其他异常,必须用于所有异常处理的结尾(即最后一个异常处理) sqlerrm 表示异常信息例子:
declare myexception exception; otherexception exception; begin -- raise myexception; raise otherexception; exception when myexception then dbms_output.put_line('get a exception !'); when others then dbms_output.put_line('get a other exception !'); end;
- 引发程序错误
RAISE_APPLICATION_ERROR(error_number,error_message); -用于创建用户定义的错误信息 -可以在可执行部分和异常处理部分使用 -错误编号必须介于 -20000 和 -20999 之间 -错误消息的长度可长达 2048 个字节
0 0
- 【个人笔记】PL/SQL 基本编程
- PL/SQL个人学习笔记
- PL/SQL编程笔记
- pl/sql编程笔记
- PL/SQL个人学习笔记(二)
- pl sql 数据库编程 笔记
- PL/SQL编程学习笔记
- oracle中pl/sql编程-笔记
- Oracle学习笔记之PL/SQL编程
- Oracle学习笔记20150910pl/sql编程
- Oracle学习笔记20150911pl/sql编程
- pl/sql编程学习笔记(一)
- pl/sql编程学习笔记(二)
- Oracle学习笔记之PL/SQL编程
- pl/sql基本语句
- PL/SQL基本结构
- pl/sql基本语法
- PL/SQL基本使用
- 随笔.01(关于equals和==的区别)
- untiy 3d ShaderLab_第8章_4_ 单光照贴图在Deferred 渲染路径下的实时阴影
- U盘Windows PE 安装系统简易教程
- 【bzoj2829】【信用卡凸包】【凸包】
- Android Studio如何设置代码自动提示
- 【个人笔记】PL/SQL 基本编程
- tomcat 解析(五)-Tomcat的核心组成和启动过程
- Python 小练习 倒序输出
- Android自助餐之RxJava手册
- jquery submit()不能提交表单的解决方法
- UITableViewCell的操作(增加cell,删除cell,插入cell)
- 课后题详解
- 设计模式遵循的几个基本原则
- getRequestDispatcher 和sendRedirect区别