定义

函数用于计算和返回一个结果值,把经常需要进行的计算写成函数,函数的调用是表达式的一部分。
     函数与过程在创建的形式上有些相似,也是编译后放在内存中供用户使用。
     函数必须有一个返回值,而过程没有做强制的规定。
     RETURN在声明部分需要定义一个返回参数的类型,而在函数体中必须有一个RETURN语句。如果函数结束时还没有遇到返回语句,就会发生错误。

创建

create or replace function Fn_First
return varchar2 --不需要长度
is
Result varchar2(100); --declare,长度定义。
begin
NULL;
return(Result);
end Fn_First;

调用方法一

declare
var_str varchar(100);
begin
var_str := fn_first();
dbms_output.put_line(var_str);  

 调用方法二

select  fn_first() from dual;

项目应用

带输入参数

CREATE OR REPLACE FUNCTION SF_PUB_STRMINUSINT
(p_beg in varchar2,
p_end in varchar2
)
return int
/**
AUTH
FUNC 两个随机号相减得数
**/
AS
v_ret int;
vs_geb varchar2(30);
vs_str varchar2(30);
vn_beg int;
vs_dne varchar2(30);
vn_end int;
begin
--反转
select reverse(p_beg) into vs_geb from dual;
--正则
select regexp_substr(vs_geb,'[0-9]+',1,1) into vs_str from dual;
--取得随机码
select to_number(reverse(vs_str)) into vn_beg from dual;
--止号
select reverse(p_end) into vs_dne from dual;
--正则
select regexp_substr(vs_dne,'[0-9]+',1,1) into vs_str from dual;
--取得随机码
select to_number(reverse(vs_str)) into vn_end from dual;
v_ret:=vn_end-vn_beg+1;
return v_ret;
end SF_PUB_STRMINUSINT;  

以对象返回数据列表

create or replace function fn_test
( pid in number
)
return
tabTEST
is
Result tabTEST =tabTEST();
USERID number(12);
VNAME varchar(200);
orgid number(12);
type tab is table of number;
tab_test1 tab;
/***
create or replace type ctest as object
(
cUser number(12), --不可注释
cName varchar(200),
cOrg number(12)
)
create or replace type tabTEST is table of ctest
测试
select from table(cast(fn_test({0})as tabTEST))
***/
begin
select ID bulk collect into tab_test1 from tuser where id=pid;
Result =tabTEST();
for i in 1..tab_test1.count loop
select ID,name,belongorg into USERID,VNAME,orgid from tuser where ID=tab_test1(i); Result.extend;
Result(Result.count)=ctest(NULL,NULL,NULL);
Result(Result.count).cUser=USERID;
Result(Result.count).cName=VNAME;
Result(Result.count).cOrg =orgid;
end loop;
return(Result);
end fn_test;  

Oracle 函数 Function的更多相关文章

  1. Oracle 函数function之返回结果集

    工作中常需要经过一段复杂逻辑处理后,得出的一个结果集.并能够将这个结果集作为一个表看待,去进行关联查询 我一般采用建立函数function的方式来处理. --创建包,声明function和typeCR ...

  2. Oracle函数function

    --function /* 函数是有返回值.-只能有一个返回值. 语法 Create or replace func1(参数) Return varchar2 As Pl/sql块 Return 'J ...

  3. 浅谈Oracle函数返回Table集合

    在调用Oracle函数时为了让PL/SQL 函数返回数据的多个行,必须通过返回一个 REF CURSOR 或一个数据集合来完成.REF CURSOR 的这种情况局限于可以从查询中选择的数据,而整个集合 ...

  4. oracle的function和procedure返回值给shell

    本文演示两个关于如何在shell中调用oracle的function和procedure,并将返回值返回给shell. 1.首在package中创建function和procedure,脚本如下: G ...

  5. 汉字转拼音的Oracle函数

    前言: 最近处理一个特殊的问题,需要用到汉字自动转换拼音的功能. 解决: 在这里找了不少资料,都是有所缺陷,而且也好像很绕.其实是一个很简单的东东.后来还是自己写了一个函数获取.分享出来,给有需要的X ...

  6. oracle 函数中,一定要注意出现空记录和多条记录的处理方法

    今天折腾了3个小时,为一个以前不知道的oracle函数机制: 在sql查询中,如果一个查询未能获取记录,oracle不会报错 如select aa from bb where 1=2; 但在oracl ...

  7. Oracle Table Function

    Oracle Table Function在Oracle9i时引入.完美的兼容了view和存储过程的长处: 应用举例: 1.Table()函数: set feedback off create or ...

  8. 【函数】Oracle函数系列(1)--字符函数

    [函数]Oracle函数系列(1)--字符函数 1  BLOG文档结构图 2  前言部分 2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识 ...

  9. Jpa-Spec oracle函数bitand,instr等扩展

    jpa-spec github: https://github.com/wenhao/jpa-spec 使用这个框架可以简化我们拼条件的复杂度,如下代码: public Page<Person& ...

随机推荐

  1. 算法——八皇后问题(eight queen puzzle)之回溯法求解

    八皇后谜题是经典的一个问题,其解法一共有种! 其定义: 首先定义一个8*8的棋盘 我们有八个皇后在手里,目的是把八个都放在棋盘中 位于皇后的水平和垂直方向的棋格不能有其他皇后 位于皇后的斜对角线上的棋 ...

  2. butterknife-gradle-plugin插件

    在android library项目里由于R类中变量不再是final类型而无法使用butterknife,为了解决此问题,Jakewharton大神引入了butterknife-gradle-plug ...

  3. docker简单介绍---部署私有docker仓库Registry

    1. 关于Registry 官方的Docker hub是一个用于管理公共镜像的好地方,我们可以在上面找到我们想要的镜像,也可以把我们自己的镜像推送上去.但是,有时候,我们的使用场景需要我们拥有一个私有 ...

  4. HTTP请求(Request)和回应(Response)对象

    附录H HTTP请求(Request)和回应(Response)对象 57 http://djangobook.py3k.cn/ Django使用request和response对象在系统间传递状态. ...

  5. Python——IPython和NumPy

    IPython: 一个增强的Python shell:许多python对象的显示形式更友好.更详细的异常显示.增加额外的命令交互式数据处理 Tab键自动完成: 键入一些内容之后,按Tab键,显示可能的 ...

  6. css3兼容360

    在头部添加 <!--启用360浏览器的极速模式(webkit) --> <meta name="renderer" content="webkit&qu ...

  7. vscode中tab键无法触发emmet快捷生成

    1.file——preference——setting 2.点击user setting的extensions 3.点击emmet 4.emmet下的edit in settings.json.添加代 ...

  8. OpenStack--ntp组件时间同步服务

    作用:ntp主要是用于对计算机的时间同步管理操作 环境: 服务端: 192.168.245.172 客户端: 192.168.245.171 时间是对服务器来说是很重要的,一般很多网站都需要读取服务器 ...

  9. Gradle安装步骤

    一. Gralde介绍 Gradle是基于Groovy语言的项目自动化建构工具,在使用Gradle之前常用的构建工具有Ant和Maven,使用这些工具我们可以用来管理项目依赖,打包,部署和发布等.使用 ...

  10. Git 的使用(皮毛))

    1.安装git 软件(下一步直到完成) 2.码云注册(保存代码) 3.创建代码托管仓库 4.创建文件夹 5.写东西并提交到码云 1.在某个文件夹下写东西 2.写完之后在此文件夹下鼠标右键,并选择[gi ...