当前位置:首页 > 开发 > 数据库 > 正文

PL/SQL的过程编程,异常,声明变量,PL/SQL块

发表于: 2014-10-16   作者:百合不是茶   来源:转载   浏览:
摘要: PL/SQL;    过程; 符号; 变量; PL/SQL块; 输出; 异常;     PL/SQL 是过程语言(Procedural Language)与结构化查询语言(SQL)结合而成的编程语言PL/SQL 是对 SQL 的扩展,sql的执行时每次都要写操作

PL/SQL;

  

   过程;

    符号;

     变量;

     PL/SQL块;

     输出;

     异常;

 

 

PL/SQL 是过程语言(Procedural Language)与结构化查询语言(SQL)结合而成的编程语言
PL/SQL 是对 SQL 的扩展,sql的执行时每次都要写操作的语句发给数据库 不利于程序的安全,pl/sql是将操作程序的语句放在数据库里面 应用程序只需要发用执行的命令

 

 

 

一, PL/SQL块;是程序的执行标志

declare --声明
begin--开始执行
exception--异常
end;--结束执行

 

 

 

二 ,过程:将操作程序的语句放在数据库里面 应用程序只需要发用执行的命令

 

创建过程;

create or replace procedure pro_1;
--procedure过程的关键字 +关键字的别名

 PL/SQL和过程的应用;

  查询emp表中的ename;

create or replace procedure pro_1 is--定义过程
begin
select ename from emp;
end;

 在PL/SQL工具执行的时候需要在后面按下  /  再按回车;程序才会执行

 

打开程序的输入输出;

set serveroutput on/off打开/关闭

 

调用过程;

exec 过程名

 exec pro_1;调用查询job的过程;

 

三;符号;

:=        赋值操作符
||         连接操作符
--        单行注释
/**/      多行注释
<<>>     标签分隔符
..         范围操作符
**        求幂操作符

 

四;变量的声明;

  变量名  数据类型;

  

declare
--声明变量
v_name varchar2(30);
v_empno number(10);

 

五;输出;

dnms_output.put_line('姓名:'||v_name);

 

  符号,变量的声明,输出的简单应用初步理解;

--查询语句

declare

--申明变量

v_name varchar2(30);

v_empno number(20);

begin--开始查询

select ename into v_name from emp where empno=7369;

--输出,||连接符号

dbms_output.put_line('姓名:'||v_name);

end;

 

 

查询语句,带提示的;

 --查询语句.设置提示输入的
declare
--声明变量
v_ename varchar2(30);
v_sal number(10);

begin
  --开始查询
  select ename into v_ename from emp where empno=&aa;
 dbms_output.put_line('姓名:'||v_ename);
  end;
  

  

 

六;异常

异常有两种类型:
预定义异常 -  当 PL/SQL 程序违反 Oracle 规则或超越系统限制时隐式引发
用户定义异常  -  用户可以在 PL/SQL 块的声明部分定义异常,自定义的异常通过 RAISE 语句显式引发

 

 oracle自定义的异常;

access_into_null 在未初化对象时出现
case_not_found 在CASE语句中的选项与用户输入的数据不匹配时出现
collection_is_null 在给尚未初始化的表或数组赋值时出现
cursor_already_open 在用户试图打开已经打开的游标时出现
dup_val_on_index 在用户试图将重复的值存在使用唯一索引的数据库列中时出现
invalid_cursor 在执行非法游标运算(如打开一个尚未打开的游标)时出现
invalid_number 在将字符串转换为数字时出现
login_denied 在输入的用户名或密码无效时出现
no_data_found 在表中不存在的请求的行时出现,此外,当程序引用已经删除的元素时
storage_error 在内存损坏或PL/SQL耗尽内存时出现
too_many_rows 在执行SELECT INTO语句后返回多行时出现
value_error 在产生大小限制错误时出现
zero_divide 以零作除数时出现
Others针对所有异常

 

异常的综合应用;

  根据提示框输入的查询;

 --查询语句.设置提示输入的
declare
--声明变量
v_ename varchar2(30);
v_sal number(10);

begin
  --开始查询
  select ename into v_ename from emp where empno=&aa;
 dbms_output.put_line('姓名:'||v_ename);
  end;

 

   在根据提示的时候如果用户输入某个数字在表中不存在,那么就会执行不成功,此时我们应该像JAVA中一样把异常捕获,如果出现异常就提示不存在这个人

declare
--声明变量
v_ename varchar2(30);
v_sal number(10);

begin
  --开始查询
  select ename into v_ename from emp where empno=&aa;
 dbms_output.put_line('姓名:'||v_ename);
 
exception
  when no_data_found then
    dbms_output.put_line('这个人不存在');
  end;
  

 

上述的PL/SQL程序汇总只能一次性的查询,不能重复的提示用户查询所需要的数据,过程可以解决这个问题;

在声明过程的时候就需要创建变量:

create procedure pro_1(v_empno number(10)) is 

 

创建可以重复提示用户输入的程序;

create or replace procedure pro_2(v_empno varchar2) is
v_ename varchar2(30);
begin 
  select ename into v_ename from emp where empno=v_empno;
  dbms_output.put_line('姓名:'||v_ename);
  exception
     when no_data_found then
       dbms_output.put_line('不存在这个人');
       
  end;

 在执行前先set serveroutput  on 打开输入输出

使用exec pro_1;可以不断的查找数据

 

PL/SQL的过程编程,异常,声明变量,PL/SQL块

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
一、PL/SQL概念 PL/SQL:Procedural language/sql,是oracle在标准sql语句上的扩展。PL/SQL不仅允许
一、什么是pl/sql pl/sql(procedural language/sql)是Oracle在标准的sql语言上的扩展,pl/sql不仅
select必须有返回记录 要不会报错说未找到数据 且必须有into select语句返回一条且仅有一条记录不能
--Table变量类型,类似于JAVA数组 小例子1 1.声明一个table数组“类型”: a.type表示我重新定义了一
pl/sql 基础---定义并使用变量! 在编写 pl/sql 程序时,可以定义变量和常量;在pl/sql 程序中包括有
PL/SQL 错误过程、函数及解决方案笔记 1、創建一個過程,利用 cursor將一個表中的兩個字段的內容,
在实际开发中,oracle是使用相当多的一种数据库,本人所见过的,像银行、证劵、电信这样数据上T(10
学会使用PL/SQL Developer的调试功能,对于编写复杂的存储过程,包,funtion...非常有帮助,所以今
学会使用PL/SQL Developer的调试功能,对于编写复杂的存储过程,包,funtion...非常有帮助,所以今
不带参数的游标 fetch 取出 当执行open c时才执行select *语句 并将结果集加载到内存中去 cursor与循
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号