查询oracle包的建立时间,Oracle创建存储过程、创建函数、创建包

本文详细介绍了如何在Oracle数据库中创建存储过程、函数以及包。通过实例展示了基本语法和调用方法,包括无返回值和有返回值的存储过程,以及如何定义包规范和包体。示例中包含了更新记录、查询数据以及组合逻辑的过程和函数,帮助读者深入理解Oracle数据库的高级操作。
摘要由CSDN通过智能技术生成

一、Oracle创建存储过程

1、基本语法

69c5a8ac3fa60e0848d784a6dd461da6.pngcreateorreplaceprocedureupdate_emp_sal

(Nameinout type,

Nameinout type, ...

)isbeginendupdate_emp_sal;

69c5a8ac3fa60e0848d784a6dd461da6.png

2、写一个简单的例子修改emp表的ename字段

69c5a8ac3fa60e0848d784a6dd461da6.pngcreateorreplaceprocedureupdate_emp

(

v_empnovarchar2,

v_enamevarchar2)isbeginupdateempsetename=v_enamewhereempno=v_empno;endupdate_emp;

69c5a8ac3fa60e0848d784a6dd461da6.png

调用方法如下:

SQL>execupdate_emp('7935','test');

2、有返回值的存储过程

就写一个简单的返回empno=7935的sal值

69c5a8ac3fa60e0848d784a6dd461da6.pngcreateorreplaceprocedureemp_out_sal

(

v_empno invarchar2,

v_sal outnumber)isvsalnumber(7,2);beginselectsalintovsalfromempwhereempno=v_empno;

v_sal:=vsal;end;

69c5a8ac3fa60e0848d784a6dd461da6.png

调用有返回值的过程

69c5a8ac3fa60e0848d784a6dd461da6.pngSQL>varvsalnumberSQL>execemp_out_sal('7935',:vsal);

PL/SQLproceduresuccessfully completed

vsal---------700SQL>varvsalnumberSQL>call emp_out_sal('7935',:vsal);

Method called

vsal---------700

69c5a8ac3fa60e0848d784a6dd461da6.png

二、Oracle创建函数(function)

1、基本语法规则如下:

createorreplacefunction(Nameintype, Nameintype, ...)returnnumberisResultnumber;beginreturn(Result);end;

2、写一个简单的查询例子查询出empno=7935的sal值

69c5a8ac3fa60e0848d784a6dd461da6.pngcreateorreplacefunctionret_emp_sal(v_enamevarchar2)returnnumberisv_salnumber(7,2);beginselectnvl(sal,0)intov_salfromempwherelower(ename)=lower(v_ename);returnv_sal;end;

69c5a8ac3fa60e0848d784a6dd461da6.png

调用此函数:

SQL>varvslanumberSQL>callret_emp_sal('7935')into:vsal;

Method called

vsal---------700

三、Oracle创建包

包用于组合逻辑相关的过程和函数,它由包规范和包体两个部分组成。包规范用于定义公用的常量、变量、过程和函数,创建包规范可以使用CREATE PACKAGE命令,创建包体可以使用CREATE PACKAGE BODY

1、创建包规范

createpackage emp_pkgisprocedureemp_update_ename(v_empnovarchar2,v_enamevarchar2);functionemp_get_sal(v_empnovarchar2)returnnumber;end;

2、创建包体

69c5a8ac3fa60e0848d784a6dd461da6.pngcreateorreplacepackage body emp_pkgisprocedureemp_update_ename

(

v_empnovarchar2,

v_enamevarchar2)isvenamevarchar2(32);beginupdateempsetename=v_enamewhereempno=v_empno;commit;selectenameintovenamefromempwhereempno=v_empno;

dbms_output.put_line('雇员名称:'||vename);end;functionemp_get_sal

(

v_empnovarchar2)returnnumberisvsalnumber(7,2);beginselectsalintovsalfromempwhereempno=v_empno;returnvsal;end;end;

69c5a8ac3fa60e0848d784a6dd461da6.png

在此提示,在没有创建包规范就创建包体,会失败,要使用包,必须先创建包规范,然后在创建包体

当要调用包的过程和函数时,在过程和函数的名称前加上包名作为前缀(包名.子程序名称),而如果要访问其他方案的包时需要在包的名称前加上方案的名称

(方案名称.包名.子程序名称)

实例:

69c5a8ac3fa60e0848d784a6dd461da6.pngSQL>varvslanumberSQL>call emp_pkg.emp_get_sal('7935')into:vsal;

Method called

vsal---------700SQL>execemp_pkg.emp_update_ename('7935','helong');

雇员名称:helong

SQL>call emp_pkg.emp_update_ename('7935','helong');Method called

SQL>select*fromdual;DUMMY-----X

雇员名称:helong

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值