PL/SQL之--函数
一、函数
函数是作为数据库对象存储在oracle数据库中,函数又被称为PL/SQL子程序。oracle处理使用系统提供的函数之外,用户还可以自己定义函数。函数通常被作为一个表达式来调用或存储过程的一个参数,具有返回值。通常用于返回特定的数据。 函数语法如下:
create or replace function 函数名称 (
参数名称 测试类型,
参数名称 测试类型
)
return 数据类型
is
自定义变量名 数据类型
begin
处理语句;
return 自定义变量名;
exception
异常处理语句;
end;
函数和存储过程类似,只是函数必须有返回值。
二、实例
1、没有参数的函数
create or replace function test
return varchar2
is
begin
return 'hello world';
end test;
-- 函数调用
begin
dbms_output.put_line(test());
end
2、有输入参数的函数
create or replace function get_name(
v_id number
)
return varchar2
is --is类似于declare
v_name varchar2(50);
begin
select username into v_name from person where id = v_id;
return v_name;
end get_name;
-- 函数调用
begin
dbms_output.put_line(get_name(1));
end;
3、有带输入和输出的函数
create or replace function get_perons_info(
f_id number,
f_age out number
)
return varchar2
is
v_name varchar2(50); --必须有声明长度
begin
select username, age into v_name, f_age from person where id = f_id;
return v_name;
end get_perons_info;
-- 函数调用
declare
v_age number;
v_name varchar2(255);
begin
v_name := get_perons_info(1, v_age );
dbms_output.put_line('name:'||v_name||' age:'||v_age);
end;
4、带有输入输出参数的函数
create or replace function get_person_info2(
f_id in out number
)
return varchar2
is
v_name varchar2(50);
begin
select username, age into v_name, f_id from person where id = f_id;
return v_name;
end get_person_info2;
-- 函数调用
declare
v_id number;
v_name varchar2(50);
begin
v_id := 1;
v_name := get_person_info2(v_id);
dbms_output.put_line('name:'||v_name||' age:'||v_id );
end;
5、函数返回游标
create or replace function get_person_all
return sys_refcursor
is
p_cursor sys_refcursor;
begin
open p_cursor for
select * from person;
return p_cursor;
exception
when others then
DBMS_OUTPUT.PUT_LINE('获取信息发生错误');
end get_person_all;
--函数调用
declare
c_cursor sys_refcursor;
r_person person%rowtype;
begin
c_cursor := get_person_all();
--2、打开游标
-- open c_cursor; --此处不需要显示地打开游标,因为调用存储过程的时候返回的游标已经打开了
--3、提取数据
loop
fetch c_cursor
into r_person;
exit when c_cursor%notfound; -- 下面没有数据的时候,退出
dbms_output.put_line('id:'||r_person.id);
dbms_output.put_line('username:'||r_person.username);
dbms_output.put_line('age:'||r_person.age);
end loop;
end;
三、函数其他命令
重新编译函数
alter function 函数名称 compile;
删除函数
drop function 函数名称;
查看指定的函数
select * from dba_objects where object_name = '函数名称(字母大写)' and object_type ='FUNCTION';
PL/SQL之--函数的更多相关文章
- Netsuite Formula > Oracle函数列表速查(PL/SQL单行函数和组函数详解).txt
PL/SQL单行函数和组函数详解 函数是一种有零个或多个参数并且有一个返回值的程序.在SQL中Oracle内建了一系列函数,这些函数都可被称为SQL或PL/SQL语句,函数主要分为两大类: 单行函数 ...
- oracle pl/sql split函数
在软件开发过程中程序员经常会遇到字符串的拼接和拆分工作. 以java开发为例: 前台传入字符串拼接形式的一个JSON数据,如:"1001,1002,1003",这可能代表了一组序号 ...
- PL/SQL自定义函数
从SQL表达式中调用函数的限制 为了从SQL表达式中调用函数,一个用户定义函数必须: 是存储函数 只接受IN函数 只接收有受的SQL数据类型,而不接受PL/SQL数据类型 返回数据类型为有效的SQL数 ...
- pl/sql 过程 函数(写一个过程,输入部门编号,在控制台打印这个部门的名称,总人数,平均工资(基本工资+奖金))
1.编写过程,输入三角形三个表的长度.在控制台打印三角形的面积. create or replace procedure pro_s(v_a number,v_b number,v_c number) ...
- PL/SQL编程—函数
SQL> select * from mytest; ID NAME PASSWD SALARY ----- -------------------- -------------------- ...
- PL/SQL 06 函数 function
--函数 create or replace function 函数名称(参数1 类型1,参数2 类型2,...) return 数据类型as 变量.常量声明;begin 代码;end; cr ...
- PL/SQL 存储函数和过程
--存储过程 .不带参: create or replace procedure 存储过程名 as|is --说明部分 begin --执行的语句: end: 调用存储过程 execute 存储过程名 ...
- Oracle PL/SQL语言函数、匿名语句及循环
一.自定义函数 格式: create or replace function 函数名(参数名 参数类型...) return 返回值类型 as xx vachar2(20) ...
- oracle 学习(三)pl/sql语言函数
系统内置函数 数学运算函数 字符串函数 统计函数 日期函数 用户定义函数:存储在数据库中的代码块,可以把值返回到调用程序.调用时如同系统函数一样 参数模式 IN模式:表示该参数时输入给函数的参数 OU ...
随机推荐
- 点餐系统web版功能需求
餐厅到店点餐系统需求分析 (版本v1.0.0) 成文信息 主题词: 需求分析 作 者: 14商软ETC 文档类别: 审 核: 批 准: 文档性 ...
- KMP - HDU 1711 Number Sequence
Number Sequence Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- Linq查询操作之Where筛选
筛选操作where能够处理逻辑运算符组成的逻辑表达式.比如逻辑“与”,逻辑“或”,并从数据源中筛选数据,它和where子句的功能非常相似.Enumerable类的Where()原型如下: public ...
- Winform窗体实现简单的二维码生成和保存
二维码的生成需要用到二维码生成的类库,ThoughtWorks.QRCode.dll 步骤: 第一步:下载二维码生成类库,ThoughtWorks.QRCode.dll 第二步:新建winform项目 ...
- java之Class类详解
测试中需要用到的代码 InterfaceA代码: package jichu; interface InterfaceA { String s1 = "this is s1 in Inter ...
- Java final static abstract关键字介绍
一,抽象类:abstract 1,只要有一个或一个以上抽象方法的类,必须用abstract声明为抽象类; 2,抽象类中可以有具体的实现方法; 3,抽象类中可以没有抽象方法; 4,抽象类中的抽象方法必须 ...
- 如何选择RabbitMQ的消息保存方式?
RabbitMQ对于queue中的message的保存方式有两种方式:disc和ram.如果采用disc,则需要对exchange/queue/delivery mode都要设置成durable模式. ...
- web api post注意事项
黄色笑话 近期一个项目需要使用到web api 在使用过程中,对应get请求方式的使用基本没出什么问题 但是对于post请求状况百出. 今将遇到的的问题列出.以作借鉴. 问题 -----post方式 ...
- ArcGIS中定义图框样式
ArcGIS系统中的样式可能不能满足实际生产需要,为了实现快速制图,可自定义一些样式,以便重复利用. 安装字符 因为样式中定义了自定义的符号,这些符号都打包到字体中,所以在使用样式之前,必须安装字体文 ...
- SharePoint 2013 中自定义WCF服务
在使用SharePoint2013的时候,如果其他客户端 API 的组合不足,可以通过自定义 Web 服务扩展 SharePoint.默认情况下,SharePoint 2013 不仅支持创建自定义 A ...