存储过程 函数(基础一)
来源:互联网 发布:不吃清真食品 知乎 编辑:程序博客网 时间:2024/05/21 15:17
创建和使用存储过程
语法:CREATE PROCEDURE proc[(name [IN|OUT|INOUT]type,.....)]AS|ISdeclare statrment;BEGINstatement;EXCEPTIONexception process;END;
例子一:
函数的创建create procedure procin(dno in number)isv_maxsal number;beginselect max(sal) into v_maxsalfrom expwhere deptno = dno;dbas_output.put_line(v_maxsal);end;
语法:
CREATE FUNCTION func[(name [IN|OUT|INOUT]type,.....)]RETURN return_typeAS|ISdeclare statrment;BEGINstatement;EXCEPTIONexception process;END;
例子一:
create function add(nol number,no2 number)return numberisv_result NUMBER;beginv_result :=no1+no2;return v_result;end;创建和使用存储过程create procedure 命令语法:create[or replace] procedure 过程名(参数列表)as --说明部分plsql子程序;调用存储过程1、exec sayhellowworld();2、beginsayhellowodld();end;实例:
带参数的存储过程
给指定的员工涨100元工资 并且打印涨前和涨后的薪水
实例:
create or replace procedure raisesalary(eno in number)
as
--定义一个变量保存涨前的薪水psal eml.sal%type
begin
--得到员工涨前的薪水
select sal into from emp where empno==eno;
--给员工涨100
update emp set sal=sal+100 where empno=eno;
--需要不需要commit?
--一般不再存储过程和存储函数中做commit roloback,
--打印
dbms_output put_line(涨前:'||psal||' 涨后:'||(psal+100)||') ;
end;
存储函数
函数(function)为一命名的存储程序,可带参数,并返回一计算值函数和过程的结构类似,但是必须有一个return子句语法格式create [or replace] function 函数名(参数列表)return 函数值类型asplsql子程序体;
实例:
查询每个员工的年收入
create or replace function querympincome(eno in number)
return number
as
--定义变量保存员工的薪水和奖金psal emp,sal%type;pcomn emp.comn%type;
begin
--得到员工的月薪和奖金select sal.comn into psal.pcomn from emp where empno=eno;--直接返回年收入return psal*12+nvl(pcomn,0);
end;
in out参数
过程和函数都可以通过out指定一个和多个out 参数
如果只有一个返回值就用存储函数,否则就用存储过程
实例:
--查询某个员工的姓名 月薪 职位
create or replace procedure queryempinform(eno in number,
pename out varchar2,
psal out number,
pjob out varchar2)
as
begin
--得到该员工的姓名 月薪 职位
select ename,sal,empjob into pename,psal,pjob from emp where empon=eon;
end;
如何在out参数中使用游标
申明包结构(包头 包体)
包头(声明)
create or replace package mypackage(包名) as
type empcursor is ref cursor;--声明一个数据类型 引用光标的类型
procedure queryEmplist(dno in number,emplist out empcursor);
end mypackage;
包体(实现)
需要实现所有包头中声明的所有方法
create or replace package body mypackage as
procedure queryEmplist(dno in number,emplist out empcursor) as
begin
open emplist for select * from emp where deptno=dno;
end queryEmplist;
end mypackage;
--游标在使用前需要open 关键字for 指名函数代表什么
0 0
- 存储过程 函数(基础一)
- mysql 存储过程 (一) 基础
- 存储过程(一) 基础语句块、参数、变量
- 存储过程(一)
- 存储过程(一)
- 存储过程(一)
- 存储过程(一)
- 存储过程(一)
- MySQL基础笔记(六) 存储过程与函数
- MySQL基础笔记(六) 存储过程与函数
- Oracle存储过程之merge into 函数(一)
- 存储过程中用到的各种函数学习(一)
- PL/SQL 基础---函数、存储过程、包
- Oracle基础 自定义函数和存储过程
- 存储基础(一)
- oracle存储过程与函数(一)
- 存储过程基础(转)
- 存储过程教程(一)
- JS对象
- HDU 5534 Partial Tree(dp)
- 《CLR var C#》读书笔记-CLR的执行模型
- Android之手机摇一摇震动刷新(支持ListView、GridView、WebView)并生成我的二维码
- 黑马程序员——基础知识——匿名内部类
- 存储过程 函数(基础一)
- char指针的疑问
- 以s3c2440的I2C子系统为例, 分析其代码实现
- PCH文件的使用
- spring单例性能
- for
- C++11新特性之 rvalue Reference(右值引用)
- Database startup hangs on Windows when machine has more than 64 cores
- 关于内存对齐的那些事