1、自定义函数语法

create [or replace] function  函数名                         -- 定义一个名为xxx的函数

(

parameterName1, mode1 dataType1,

parameterName2, mode2 dataType2,

...

)

return返回值类型                                              --表示函数的返回类型为char或number等类型

is-- 表示函数体部分,关键字用is或as都可以

声明部分;

begin-- 表示函数开始

函数体;

return变量;                                                          -- 表示函数返回值

end;                                                                    -- 表示函数结束

参数含义:

参数

含义

参数值含义

parameterName1

表示参数名称

dataType

表示参数的数据类型

char、NUMBER、nvarchar2.....

mode1、mode2

表示参数类型

in、out、in out

1、IN模式:只读。在模块里面,实参的数值只能被引用,而这个参数不能被改变。

2、OUT模式:只写。模块能够给这个参数进行赋值,但是这个参数的数值不能被引用。

3、IN OUT模式:可读写。这个模块的数值在模块内可被引用或改变。

2、自定义函数使用

select 自定义函数名(参数) from 表名;

3、示例

示例1:

create or replace function explainParameter

(

inParam in char,

outParam out char,

inAndOutParam in out char

)

return char

as

returnChar char;

num   number:=0;

begin

inParam := 'Hello World';  -- 这是错误的,in类型的参数只能用来传值,不能赋值

outParam := 'Hello World'; -- 这是正确的,out类型的参数可以用来被赋值

inAndOutParam := 'Hello World'; -- 这是正确的,in out参数既可以用来传值,又可以被赋值

inAndOutParam := outParam;-- 这是错误的,out参数不能用来传值

returnreturnChar;

end;

调用:select explainParameter ('a','b','c')  from dual;

示例二:根据表名查询该表最大主键值,vseq序列表存其他业务表refcode主键最大值。

create or replace

function f_getMaxRefcode(tableName in vnarchar2)

returnnumber

is

nextval number;

num number:=0;

begin

select count(*) into num from ( select refcode from vseq where tablename=tableName );

if(num>1) then

update vseq set maxrefcode=maxrefcode+1 where tablename=tableName;

commit;

end if;

if(num=0) then

insert into vseq(tablename,maxrefcode) values(tableName,1);

commit;

end if;

select maxrefcode into nextval from vseq where tablename=tableName;

returnnextval;

end;

oracle中自定义函数如何使用,oracle自定义函数语法及使用相关推荐

  1. Oracle 中重新编译无效的存储过程, 或函数、触发器等对象(转)

    Oracle 中的存储过程在有些情况下会变成失效状态,在 PL/SQL Developer 中该存储过程的图标左上角显示一把小红叉叉.比如储过程所引用的对象失效,dblink 出问题啦都可能引起用到它 ...

  2. oracle中blob转换,BLOB转换为CLOB的函数(oracle中执行)

    BLOB转换为CLOB的函数(oracle中执行) CREATE OR REPLACE FUNCTION BlobToClob(blob_in IN BLOB) RETURN CLOB AS v_cl ...

  3. oracle函数 授权,如何在Oracle中以普通用户身份运行dbms_crypto函数?

    我在Oracle中使用dbms_crypto.hash()函数时遇到问题. 我使用sqlplus作为"sys / passwd as sysdba"连接到数据库服务器, 然后我安装 ...

  4. oracle中orand使用,Postgres兼容Oracle研究——orafce调研

    一.背景 PostgreSQL是和Oracle最接近的企业数据库,包括数据类型,功能,架构和语法等几个方面.甚至大多数的日常应用的性能也不会输给Oracle. 但是Oracle有些函数或者包,默认Po ...

  5. oracle中lang能不能查找,oracle中的查询语句

    PL/SQL单行函数和组函数详解 函数是一种有零个或多个参数并且有一个返回值的程序.在SQL中Oracle内建了一系列函数,这些函数都可被称为SQL或PL/SQL语句,函数主要分为两大类: 单行函数 ...

  6. oracle 中的日志在处理,ORACLE在存储过程中记录日志的处理包

    Java开发过程中一般使用LOG4J来将程序的运行日志记录到文件中,在ORACLE存储过程中也需要记录日志,我将工作中自己整理的一个记录日志的包分享出来,其实很简单,希望大家多提意见. 一.表结构 为 ...

  7. oracle中的sql文本类型,Oracle数据库的空间数据类型

    Oracle数据库中空间数据类型随着GIS.CAD/CAM的广泛应用,对数据库系统提出了更高的要求,不仅要存储大量空间几何数据,且以事物的空间关系作为查询或处理的主要内容.Oracle数据库从9i开始 ...

  8. oracle中raw是什么格式,oracle中RAW数据类型

    近日在研究v$latch视图时,发现一个从未见过的数据类型.v$latch 中ADDR属性的数据类型为RAW(4|8)  同时也发现v$process中的ADDR属性的数据类型也为RAW(4|8).于 ...

  9. oracle中怎么查看索引,查看oracle中表的索引

    oracle中表的索引信息存在 user_indexes 和 user_ind_columns 两张表里面, 其中, user_indexes 系统视图存放是索引的名称以及该索引是否是唯一索引等信息, ...

  10. oracle中给数据排序号,oracle中对排序的小结

    oracle中对排序的总结 -- 按拼音排序 (系统默认) select * from perexl order by nlssort(danwei,'NLS_SORT=SCHINESE_PINYIN ...

最新文章

  1. “提高一下dotnet程序的效率一”中关于exception的问题
  2. python中不同类型的数据不能相互运算_python数据类型和运算
  3. django Forbidden
  4. ustc小道消息20220120
  5. Swift - 自定义UIActivity分享
  6. a data source instance has not been supplied for the datasource 'dataset1'. rdlc
  7. linux 压缩成bz2,linux 将文件压缩成bz2格式 命令:bzip2
  8. 往年程序员是怎样过“1024程序员节”的!程序员,今年又准备怎么过?
  9. bash脚本切换管理员_开始为系统管理员使用Bash脚本
  10. java-redis初探
  11. CSS盒模型详解(图文教程)
  12. dubbo注入找不到bean_Dubbo配置参考手册之dubbo:reference
  13. oracle select into from 用法,sql select into用法
  14. 计算机键盘按键数量,电脑键盘有一百多个按键,有3个很少人会碰
  15. Laravel填充数据Seeder出现 Target class [xxx] does not exist 错误
  16. 新生入学了,针对腾讯的产品全民K歌(或QQ空间、腾讯游戏......)做一次推广活动,包括产品功能设计和运营活动推广方案。
  17. [语义分割]SPP、空洞卷积与ASPP总结
  18. 神马搜索php,php判断神马搜索引擎蜘蛛的方法
  19. 【Bugzilla】我按照bugzilla的官方指导进行的安装。(一)
  20. 英语题目作业(10)

热门文章

  1. Spring - 手把手分析 IoC 容器创建过程
  2. windows10:GTX GeForce 1070+更新nvidia显卡驱动+CUDA+CUDNN+tensorflow_gpu深度学习GPU环境搭建(史上排雷最多版本)
  3. SNS好友动态信息设计(二)
  4. 跨境电商亚马逊跟卖之如何有效地赶走跟卖
  5. CH Dream(表达)
  6. html 黑夜模式,JavaScript_使用javascript为网页增加夜间模式,HTML+CSS:复制代码 代码如下:d - phpStudy...
  7. ipad可以分屏吗_手机资讯:Mac 笔记本电源适配器可以为 iPhone 或 iPad 充电吗
  8. 交换机转发实验(回顾哈希表实现)
  9. 单年投资规模超往年总和 Web3.0:风口炒作还是互联网的未来?
  10. Ps制作信号干扰故障风艺术效果动图