①PL/SQL 程序设计简介PL/SQL是一种高级数据库程序设计语言,该语言专门用于在各种环境下对Oracle数据库进行访问。由于该语言集成于数据库服务器中,所以PL/SQL代码可以对数据进行快速高效的处理在PL/SQL中可以使用的SQL语句有:
INSERT,UPDATE,DELETE,SELECT …INTO,COMMIT,ROLLBACK,SAVEPOINT。
提示:在PL/SQL中只能用SQL语句中的DML 部分,不能用DDL 部分,如果要在PL/SQL中使用DDL(如CREATE table 等)的话,只能以动态的方式来使用Oracle--plsql复合数据类型 http://www.linuxidc.com/Linux/2012-03/57482.htm--------------------------------------分割线 --------------------------------------rlwrap - 解决Linux下SQLPLUS退格、上翻键乱码问题 http://www.linuxidc.com/Linux/2013-07/87890.htmSQLPLUS spool 到动态日志文件名 http://www.linuxidc.com/Linux/2013-03/80988.htmOracle SQLPLUS提示符设置 http://www.linuxidc.com/Linux/2012-10/73326.htm通过设置SQLPLUS ARRAYSIZE(行预取)加快SQL返回速度 http://www.linuxidc.com/Linux/2011-07/38711.htmPL/SQL Developer实用技巧分享 http://www.linuxidc.com/Linux/2014-09/107391.htm--------------------------------------分割线 --------------------------------------②PL/SQL块结构和组成元素
PL/SQL程序由三个块组成,即声明部分、执行部分、异常处理部分PL/SQL块的结构如下:
DECLARE
/* 声明部分: 在此声明PL/SQL用到的变量,类型及游标,以及局部的存储过程和函数*/
BEGIN
/* 执行部分: 过程及SQL 语句, 即程序的主要部分*/
EXCEPTION
/* 执行异常部分: 错误处理*/
END;其中执行部分是必须的。
PL/SQL块可以分为三类:
1. 无名块:动态构造,只能执行一次。
2. 子程序:存储在数据库中的存储过程、函数及包等。当在数据库上建立好后可以在其它程序中调用它们。
3. 触发器:当数据库发生操作时,会触发一些事件,从而自动执行相应的程序。③标识符
PL/SQL程序设计中的标识符定义与SQL 的标识符定义的要求相同。要求和限制有:
??标识符名不能超过30字符;
??第一个字符必须为字母;
??不分大小写;
??不能用’-‘(减号);
??不能是SQL保留字。提示: 一般不要把变量名声明与表中字段名完全一样,如果这样可能得到不正确的结果建议的命名方法:
标识符 命名规则 例子
程序变量 V_name V_name
程序常量 C_Name C_company_name
游标变量 Name_cursor Emp_cursor
异常标识 E_name E_too_many
表类型 Name_table_type Emp_record_type
表 Name_table Emp
记录类型 Name_record Emp_record
替代变量 P_name P_sal
绑定变量 G_name G_year_sal④变量类型
除了CHAR、VARCHAR2、BINARY_INTEGER、NUMBER(p,s)、LONG、DATE、BOOLEAN、ROWID、ROWID这些
还有复合类型
ORACLE 在PL/SQL 中除了提供象前面介绍的各种类型外,还提供一种称为复合类型的类型---记录和表1)记录类型
记录类型是把逻辑相关的数据作为一个单元存储起来,称作PL/SQL RECORD 的域(FIELD),其作用是存放互不相同但逻辑相关的信息。
定义记录类型语法如下:
TYPE record_type IS RECORD(
Field1 type1 [NOT NULL] [:= exp1 ],
Field2 type2 [NOT NULL] [:= exp2 ],
. . . . . .
Fieldn typen [NOT NULL] [:= expn ] ) ;例:
1 自定义记录类型declare
--定义一个记录类型
type customer_type is record(
v_cust_name varchar2(20),
v_cust_id number(10)); --声明自定义记录类型的变量
v_customer_type customer_type;
begin
v_customer_type.v_cust_name := "刘德华";
v_customer_type.v_cust_id := 1001;
dbms_output.put_line(v_customer_type.v_cust_name||","||v_customer_type.v_cust_id);
end;2 自定义记录类型declare
--定义一个记录类型
type emp_record is record(
v_name varchar2(25),
v_email varchar2(25),
v_salary number(8, 2),
v_job_id varchar2(10));
--声明自定义记录类型的变量
v_emp_record emp_record;
begin
--通过 select ... into ... 语句为变量赋值
select last_name, email, salary, job_id into v_emp_record
from employees
where employee_id = 186;
-- 打印变量的值
dbms_output.put_line(v_emp_record.v_name || ", " || v_emp_record.v_email || ", " ||
v_emp_record.v_salary || ", " || v_emp_record.v_job_id);
end;4. 使用 %type 定义变量,动态的获取数据的声明类型declare
--定义一个记录类型
type emp_record is record(
v_name employees.last_name%type,
v_email employees.email%type,
v_salary employees.salary%type,
v_job_id employees.job_id%type);
--声明自定义记录类型的变量
v_emp_record emp_record;
begin
--通过 select ... into ... 语句为变量赋值
select last_name, email, salary, job_id into v_emp_record
from employees
where employee_id = 186;
-- 打印变量的值
dbms_output.put_line(v_emp_record.v_name || ", " || v_emp_record.v_email || ", " ||
v_emp_record.v_salary || ", " || v_emp_record.v_job_id);
end;
5. 使用 %rowtypedeclare
--声明一个记录类型的变量
v_emp_record employees%rowtype;
begin
--通过 select ... into ... 语句为变量赋值
select * into v_emp_record
from employees
where employee_id = 186;
-- 打印变量的值
dbms_output.put_line(v_emp_record.last_name || ", " || v_emp_record.email || ", " ||
v_emp_record.salary || ", " || v_emp_record.job_id || ", " ||
v_emp_record.hire_date);
end;
更多详情见请继续阅读下一页的精彩内容: http://www.linuxidc.com/Linux/2014-11/109745p2.htm
PL/SQL流程控制语句Oracle数据库高级子查询相关资讯 PL/SQL
- PL/SQL之存储过程和函数 (今 14:09)
- PL/SQL Developer连接本地Oracle (07月27日)
- 【PL/SQL系列】Oracle存储过程使用 (04月23日)
| - PL/SQL Developer 使用技巧分享 (09月16日)
- PL/SQL实现Java中的split()方法的 (07月10日)
- 从一个案例看PL/SQL代码片的编译与 (03月04日)
|
本文评论 查看全部评论 (0)