存储过程 学习笔记一
2013-12-04 09:55
239 查看
create table mytest(
name varchar2(30),
password varchar2(30)
);
create or replace procedure sp_pro1 is
begin
--执行部分
insert into huangbiao.mytest values ('huangbiao','123');
end;
create or replace procedure sp_pro2 is
begin
delete from huangbiao.mytest where name='huangbiao';
end;
/
exec sp_pro2;
如何查看错误信息
show error;
如何调用该过程
1、exec 过程名(参数1,参数2....)
2、call 过程名(参数1,参数2....)
单行注释--
多行注释/*....*/
定义变量,建议v_作为前缀v_sal
定义常量,建议c_作为前缀c_rate
定义游标,建议_cursor结尾 emp_cursor
定义例外,建议e_作为前缀e_error
pl/sql块由三部分构成:
定义部分----declear,该部分是可选的
执行部分----begin,该部分是必须的
例外处理部分----exception,该部分是可选的
最简单的块
set serveroutput on----打开输出选项
begin
dbms_output.put_line('hello');
end;
dbms_output是Oracle所提供的包,类似于JAVA中提供的包,put_line是dbms_output包中的函数
定义部分和执行部分
declare
v_ename varchar2(500);----定义变量
begin
select name into v_ename from mytest where password='123';
dbms_output.put_line('name is ' || v_ename);
end;
declare
v_ename varchar2(500);----定义变量
begin
--&password 表示用户手动的输入值进去
select name into v_ename from mytest where password=&password;
dbms_output.put_line('name is ' || v_ename);
end;
关于多值对应(当前用户需要有访问scott.emp表的查询权限)
declare
v_ename varchar2(500);----定义变量
v_sal number(7,2);
begin
select ename,sal into v_ename,v_sal from scott.emp where ename='SCOTT';
dbms_output.put_line('name is ' || v_ename || ' sal is '|| v_sal);
end;
异常处理
declare
v_ename varchar2(500);----定义变量
v_sal number(7,2);
begin
select ename,sal into v_ename,v_sal from scott.emp where ename='&ename';
----&ename一定要被引号包裹起来,否则会出现语法错误
dbms_output.put_line('name is ' || v_ename || ' sal is '|| v_sal);
----异常处理
exception
when no_data_found then
dbms_output.put_line('查不到指定的数据');
end;
备注:
1、当随便输入一个不存在的值就会抛出异常
2、利用异常来处理某些逻辑
3、Oracle利用事先预定义好的异常来处理
案例:
输入雇员的姓名和新工资,可以修改雇员的工资
create or replace procedure sp_pro3(spename in varchar2,spsal in number) is
begin
--执行部分,根据用户名取修改工资
update scott.emp set sal=spsal where emp.ename=spename;
end;
函数用于返回特定的数据,当建立函数时,在函数头必须包含return子句,而在函数体内必须包含return语句返回的数据。
案例
----输入雇员姓名,返回雇员的年薪
create or replace function sp_fun2(spname varchar2)return number is yearsal number(7,2);
begin
----执行部分
select sal*12+nvl(comm,0) into yearsal from scott.emp where ename=spname;
return yearsal;
end;
var income number;
call sp_fun2('SCOTT') into:income;
----into:incom 中间不能有空格,否则查询不到东西
print income
包用于在逻辑上组合过程和函数
create or replace package sp_package is
procedure update_sal(name varchar2,newsal number);
function annual_income(name varchar2) return number;
end;
给包实现包体
create package body sp_package is
procedure
name varchar2(30),
password varchar2(30)
);
create or replace procedure sp_pro1 is
begin
--执行部分
insert into huangbiao.mytest values ('huangbiao','123');
end;
create or replace procedure sp_pro2 is
begin
delete from huangbiao.mytest where name='huangbiao';
end;
/
exec sp_pro2;
如何查看错误信息
show error;
如何调用该过程
1、exec 过程名(参数1,参数2....)
2、call 过程名(参数1,参数2....)
单行注释--
多行注释/*....*/
定义变量,建议v_作为前缀v_sal
定义常量,建议c_作为前缀c_rate
定义游标,建议_cursor结尾 emp_cursor
定义例外,建议e_作为前缀e_error
pl/sql块由三部分构成:
定义部分----declear,该部分是可选的
执行部分----begin,该部分是必须的
例外处理部分----exception,该部分是可选的
最简单的块
set serveroutput on----打开输出选项
begin
dbms_output.put_line('hello');
end;
dbms_output是Oracle所提供的包,类似于JAVA中提供的包,put_line是dbms_output包中的函数
定义部分和执行部分
declare
v_ename varchar2(500);----定义变量
begin
select name into v_ename from mytest where password='123';
dbms_output.put_line('name is ' || v_ename);
end;
declare
v_ename varchar2(500);----定义变量
begin
--&password 表示用户手动的输入值进去
select name into v_ename from mytest where password=&password;
dbms_output.put_line('name is ' || v_ename);
end;
关于多值对应(当前用户需要有访问scott.emp表的查询权限)
declare
v_ename varchar2(500);----定义变量
v_sal number(7,2);
begin
select ename,sal into v_ename,v_sal from scott.emp where ename='SCOTT';
dbms_output.put_line('name is ' || v_ename || ' sal is '|| v_sal);
end;
异常处理
declare
v_ename varchar2(500);----定义变量
v_sal number(7,2);
begin
select ename,sal into v_ename,v_sal from scott.emp where ename='&ename';
----&ename一定要被引号包裹起来,否则会出现语法错误
dbms_output.put_line('name is ' || v_ename || ' sal is '|| v_sal);
----异常处理
exception
when no_data_found then
dbms_output.put_line('查不到指定的数据');
end;
备注:
1、当随便输入一个不存在的值就会抛出异常
2、利用异常来处理某些逻辑
3、Oracle利用事先预定义好的异常来处理
案例:
输入雇员的姓名和新工资,可以修改雇员的工资
create or replace procedure sp_pro3(spename in varchar2,spsal in number) is
begin
--执行部分,根据用户名取修改工资
update scott.emp set sal=spsal where emp.ename=spename;
end;
函数用于返回特定的数据,当建立函数时,在函数头必须包含return子句,而在函数体内必须包含return语句返回的数据。
案例
----输入雇员姓名,返回雇员的年薪
create or replace function sp_fun2(spname varchar2)return number is yearsal number(7,2);
begin
----执行部分
select sal*12+nvl(comm,0) into yearsal from scott.emp where ename=spname;
return yearsal;
end;
var income number;
call sp_fun2('SCOTT') into:income;
----into:incom 中间不能有空格,否则查询不到东西
print income
包用于在逻辑上组合过程和函数
create or replace package sp_package is
procedure update_sal(name varchar2,newsal number);
function annual_income(name varchar2) return number;
end;
给包实现包体
create package body sp_package is
procedure
相关文章推荐
- MySql存储过程学习笔记
- oracle 存储过程和函数学习笔记
- mysql存储过程学习笔记
- mysql学习笔记之存储过程学习笔记
- Java学习笔记2-JDBC存储过程
- oracle 存储过程学习笔记
- 【SQLSERVER学习笔记】分页存储过程+调用
- 【Oracle 学习笔记】Day 3 存储过程及函数
- 存储过程学习笔记
- MyCat 学习笔记 第十三篇.数据分片 之 通过HINT执行存储过程
- 存储过程学习笔记
- Java学习笔记之数据库(触发器、事物、索引、投影和除、视图、存储过程和函数 )含各种链)___ 一直补充
- 转:Mysql存储过程学习笔记--变量、参数、注释收藏
- oracle存储过程学习笔记1–基本结构
- Mysql存储过程学习笔记--建立简单的存储过程
- 黑马程序员之存储过程学习笔记:存储过程的基本使用
- C#开发学习笔记:C#通过存储过程创建数据表
- DB2 SQL存储过程学习笔记
- Oracle 数据库存储过程学习笔记
- 【ARM学习笔记】三、S3C2440A的存储控制器及启动过程