oracle pl/sql简介、块、过程

时间:2023-03-08 20:48:14
oracle  pl/sql简介、块、过程

pl/sql语言是oracle在sql上扩展的语言。
1 过程、函数、触发器是在pl/sql编写
2 过程、函数、触发器是在oracle中
3 pl/sql的语句可以在java中直接调用

简单介绍

在sql—plus编写一个存储过程,该过程可以向某表中添加记录。

第一步:创建表
create table mytest(name varchar2(20), passwd varchar2(20));

第二步:创建过程
create procedure mypro1 is begin
--执行部分
insert into mytest value('wdx','123')
end;
/
--回车
(注意事项:如果系统以后有mypro1这个过程名了,要么换名要么在create后面加上or replace;如果有错,输入紧跟着输入show error)

第三步:调用该过程
方式1:exec 过程名(参数值1,参数值2....)
方式2: call 过程名(参数值1,参数值2....)

当然也可以在pl/sql developer中创建上述过程,类似。

pl/sql可以编写过程、函数、触发器、包等。

编写规范:

1 注释
单行注释--
多行注释/*...*/

2 标识符号的命名规范
当定义变量时,建议用v_作为前缀
当定义的常量时,建议使用c_
当定义的游标时,建议使用_cursor
当定义例外error时,建议使用e_

***块***

pl/sql使用来编写块的,块结构示意图,三部分构成,分别为定义部分、执行部分、例外处理部分,
declear
/*定义开始*/
begin
/*执行部分*/
exception
/*例外处理部分*/
end;

实例1-只包括执行部分的pl/sql块

set serveroutput on --打开输出选项
begin
  dbm_output.put_line('hello world')
  --dbm_output是包,包里面可以是函数和过程
end;
/

实例2-包含定义部分和执行部分的pl/sql块

set serveroutput on --打开输出选项

declare
v_ename varchar2();
v_sal number(,); begin
  select ename,sal into v_ename, v_sal from emp where empno = &no;
  --no是一个接收用户输入的变量,名字可以随便起
  dbm_output.put_line('雇员名'||v_ename ||' 工资:'||v_sal); exception
  when no_data_found then
  --no_data_fount是oracle预先已经定义的意外
  dbms_output.put_line('输入的编号有错误');
end;
/

过程:

过程用于执行特定的操作,当建立过程时,既可以指定输入参数也可以指定输出参数,通过在过程中使用输入参数,可
以将数据传递到执行部分,通过使用输出参数,可以将执行部分的数据传递到应用环境。

实例1

create procedure mypro(spName varchar2, spsal number) is
begin
  --执行,根据用户名去修改工资
  update emp set sal=spsal where ename=spName;
end;
/ call mypro('scott',);