设为首页 加入收藏

TOP

PL/SQL编程(一)
2015-07-24 10:25:28 来源: 作者: 【 】 浏览:0
Tags:PL/SQL 编程

1 PL SQL概念
PL/SQL也是一种程序语言,叫做过程化SQL语言(Procedural Language/SQL)。
PL/SQL是Oracle数据库对SQL语句的扩展。在普通SQL语句的使用上增加了 编程语言的特点,
所以PL/SQL就是把数据操作和查询语句组织在PL/SQL代码的过程性单元中,
通过逻辑判断、循环等操作实现复杂的功能或者计算的程序语言。

2 开发工具
(1) SQL Plus: Oracle公司的工具
(2) PL/SQL Developer: 一个独立的集成开发环境(IDE)


3 PL/SQL 编程分类
1 过程(存储过程)
2 函数
3 触发器
4 包
5 其它

4 注释
单行注释:-要注释的内容
多行注释:/*要注释的内容*/

5 标识符规范(仅供参考)
变量:用v作为前缀
常量:用c作为前缀
游标:用cursor为后缀
异常:用e作为前缀

6 PL/SQL块结构
声明(定义)部分:使用关键字 declare 定义变量、游标等等
执行部分:以 begin 关键字开始
异常控制部分: 捕获执行中产生的错误
结束部分:以end关键字结尾

例1:
SQL>
set serveroutput on --打开输出选项
begin
dbms_output.putline('Hello PL/SQL !');
end;
例2
SQL>declare
v_ename varchar2(5); --定义一个字符串变量
begin
select ename into v_ename from emp where empno = &no;
dbms_output.put_line('姓名:' || v_ename);
end;
说明:& 表示要从控制台输入的变量

例3
SQL>declare v_ename varchar2(5); --定义一个字符串变量
begin
select ename into v_ename from emp where empno = &no;
dbms_output.put_line('姓名:' || v_ename);
--下面是异常处理
exception
when no_data_found then
dbms_output.put_line('出现错误!');
end;
注意:no_data_found 表示一种异常,即如果用户输入的参数"&no" 查不出数据

7 创建存储过程
SQL>
create procedure sp_proName1(spName varchar2,newSalary number) is
begin
update emp set sal =newSalary where ename = spName
end;

8 执行存储过程
语法:exec 存储过程名称(参数);
SQL>exec sp_proName1('OBAMA',10000);

9 创建函数
语法:create function 函数名称(参数) return 返回值;

10 调用函数(SQL Plus)
语法:(1) var 变量1 类型; // 定义变量用来保存调用函数后返回的结果
(2) call 函数名称(参数) into:变量1; // 使用call关键字调用函数,并将函数返回的结果保存在变量1中
(3) print 变量1; // 显示结果

11 包的创建
包:函数和存储过程的组合
语法: create package 包名称 is procedure 存储过程名称(参数);
function 函数名称(参数) return 变量;
end;

12 创建包体(Package Body)
语法:create package body 包体名称 is
... //存储过程创建过程
... //函数创建过程
end;

13 调用包的函数和存储过程
调用存储过程
语法:call 包名.存储过程名称(参数);
调用函数
语法:call 包名.函数名称(参数);
注意: call关键字也可以换成 exec

14 触发器
触发器是指隐含执行的存储过程。当定义触发器时必须指定触发的事件和触发的操作。
使用create trigger 来创建触发器

15 游标

(暂略)


16 if语句的使用
SQL> create or replace procedure Name1(spName varchar2) is
v_salary emp.sal%type;
begin
select sal into v_salary from emp where ename = spName;
if v_salary < 3000 then
update emp set sal=sal * 1.2 where ename = spName;
end if;
end;

17 if...then...else语句
SQL>
create or replace procedure Name1(spName varchar2) is
v_salary emp.sal%type;
begin
select sal into v_salary from emp where ename = spName;
if v_salary < 3000 then
update emp set sal=sal * 1.2 where ename = spName;
else
update emp set sal=sal * 1.05 where ename = spName;
end if;
end;

18 使用loop循环
SQL> create or replace procedure Name1(spName varchar2) is
v_num :=1;
begin
loop
insert into users values (v_num,spname);
exit whrn v_num=10;
v_num := v_num + 1;
end loop;
end;
注意:在这里“:=”表示赋值的意思

19 使用 while 循环
SQL> create or replace procedure Name1(spName varchar2) is
v_num :=1;
begin
while v_num <10 loop
insert into users values (v_num,spname);
v_num := v_num + 1;
end loop;
end;

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇sql语句删除主键、更改主键、删除.. 下一篇SQLServer数据加密解密:常用的加..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Python爬虫教程(从 (2025-12-26 16:49:14)
·【全269集】B站最详 (2025-12-26 16:49:11)
·Python爬虫详解:原 (2025-12-26 16:49:09)
·Spring Boot Java: (2025-12-26 16:20:19)
·Spring BootでHello (2025-12-26 16:20:15)