很久没写PL/SQL了,在这里把以前的知识拿出来和新入行的朋友们分享,自己也可以巩固,分享快乐!感谢宁姐教育啊
1、PL/SQL语言简介:
SQL99: 1999年制定的SQL标准;oracle、db2、sybase、sql server、mysql...都遵守这个标准。
PL/SQL(PL: Procedure Language)是标准SQL语言上的过程性扩展,他不仅允许嵌入SQL语句,
而且允许定义变量和常量,允许过程语言结构(条件分支语句和循环语句),
允许使用例外处理Oracle错误等,在运行Oracle的任何平台上应用开发人员多可以使用PL/SQL。
注意:PL/SQL在不同数据库中语法不同。 PL/SQL的特点:
1 提高应用程序的运行性能;
2 提供模块化得程序设计功能;
3 允许定义标识符;
4 具有过程语言控制结构;
5 具有良好的兼容性;
6 处理运行错误。
2、PL/SQL的程序结构:
PL/SQL的程序结构主要包括:变量、赋值、表达式、分支、循环。
1.PL/SQL程序块的组成([]代表可有可无):
[declare] 变量声明
begin 语句; 执行部分
[exception] 异常 捕捉并作异常处理
end;
2.尝试第一个打印语句:HelloWorld!
set serveroutput on;
begin
dbms_output.put_line('HelloWorld!');
end;
/
注意:Oracle默认屏幕输出是关闭的,可以使用show serveroutput 查看,默认OFF ,
使用set serveroutput on;打开屏幕输出。"/" 可以执行你刚才的语句,看到结果。
第一个例子就完成了。
3. 匿名块:等价于一条SQL语句,常用于调试。 取出姓名为scott员工的职位:
declare v_title varchar2(20);
-- 查询名字是scott 的工作,赋值给我们的变量
begin select job into v_title from emp where ename = 'SCOTT';
dbms_output.put_line(v_title);
end;
注意:标示符长度不超过30个字符; 单行注释:"--注释"、多行注释:"/*注释*/"。
这里我用的是oracle 10G,用户是scott用户,如果登录提示:the account is locked
请先登录超级用户 :sys as aysdba/(你的密码) 进行解锁
然后输入:alter user scott acount unlock
修改用户密码:alter user scott identified by 密码。
4.异常块: 取出姓名为aa员工(部门号为10)的职位:
declare
v_title varchar2(20);
begin
select job into v_title from emp where ename = 'aa';
--where deptno='10' 多行的错误
dbms_output.put_line(v_title);
exception
when no_data_found then
dbms_output.put_line('no data found!');
when too_many_rows then
dbms_output.put_line('too many rows ');
end;
/
注意:no_data_found(数据没有找到异常)、too_many_rows(数据查找过多异常)
这里异常名称是不能改变了,常用的异常,有兴趣可以自己去查询。后面会说到自己定义异常。
PLSQL 和程序差不多,一些固定的逻辑语法,组织你需要的业务,后面再更多的介绍