oracle调用包中函数,oracle自定义函数、自定义包使用(一)

本文介绍了如何在Oracle中定义和调用自定义函数,包括一个名为Fun_test1的示例函数及其调用存储过程。此外,还探讨了包的概念,包括包头和包体的定义,以及如何调用包中的自定义方法。最后,提供了一个测试调用包内方法的存储过程示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、自定义函数的定义和调用入门

1 、一个最简单的自定义函数Fun_test1的定义。

create or replace function Fun_test1(p_1

number)--Fun_test1是函数名,有一个输入参数p_1,是number型的。返回值也是number型的

return number

IS

begin

if p_1>0 then

return 1;

elsif p_1=0 then

return 0;

else

return -1;

end if;

end;

--这个函数只是可以知道自定义函数的定义和格式。其实没什么用途。

2、Fun_test1自定义函数的调用的存储过程Pro_Fun_test1_1示例:

create or replace procedure Pro_Fun_test1_1(

p1_in in number,

p2_out out number

)

AS

begin

p2_out:=Fun_test1(p1_in);

end Pro_Fun_test1_1;

--一个输入参数,一个输出参数

3、Fun_test1自定义函数的调用的存储过程Pro_Fun_test1_2示例:

create or replace procedure Pro_Fun_test1_2(

p1_in in number,

p2_out out number

)

AS

t_1 number;

begin

select Fun_test1(p1_in)+100 INTO p2_out

from bill_org where org_ID=1;

end Pro_Fun_test1_2;

--自定义函数的调用方法和Oracle的其它内部函数是一样的。

二、包的定义和使用入门

包一般是过程和函数的集合,对过程和函数进行更好的封装,一般不针对字段。

包的构成包括包头和包体。

1、包头的定义:

包头仅仅只是对包中的方法进行说明,而没有实现

语法:

create or replace package myPackage_1

is

procedure syaHello(vname varchar2);--申明了该包中的一个过程

end;

2、包体的定义:

包体是对包头中定义的过程、函数的具体实现。

create or replace package body myPackage_1

is

procedure syaHello(vname

varchar2)--对包中定义的过程的实现

is

begin

dbms_output.put_line('Hello '||vname);

end;

end;

要注意的是:

create or replace package后面的名称必须和create or replace package

body后面的名称一致,

如果将create or replace package body后面的名称改为,'MYPACKAGE'

否则将会出现诸如下面的错误:

必须说明标识符 'MYPACKAGE'

3、调用包用的自定义方法:

create or replace procedure Pro_test_package(

p1_in string

)

AS

begin

myPackage_1.syaHello(p1_in);

end Pro_test_package;

4、测试调用的存储过程:

同其它的存储过程一样测试(略)

以上脚本在oracle817上测试通过

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值