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 ...
随机推荐
- mysql一个事务中有DDL语句的binlog情况
在autocommit=1的情况下,开启一个事务,如果里面有DDL语句,那么事务开始到DDL语句之间的DML语句都会被提交.再开启新的事务.可以从binlog中看出 session语句: 09 ...
- 黑客入门之IP地址及常用命令
在网络上,只要利用IP地址就可以找到目标主机,因此,如果黑客想要攻击某个网络主机,就要先确定该目标主机的域名或IP地址. IP地址概述 所谓IP地址就是一种主机编址方式,给每个连接在Internet上 ...
- SignalR简单示例教程入门版
上周五最后一天在公司上班,无聊之余就想做点什么.介于之前有人让我做个简易版的在线聊天的,于是乎就打算花一天时间来弄下关于SignalR的简单教程制作一个在线的聊天的. 1:前端用了国产的一个MVVM框 ...
- 1 初识Orchard
网上关于Orchard的介绍已经很多了,具体Orchard是干啥的我就不再啰嗦,这个系列的主要目的就是介绍学习和使用orchard的过程,和在此过程中碰到问题的解决方案.下面直接进入正题. 获取orc ...
- Html5学习笔记(1)
1.figure\figcaption||detail\summary||mark学习笔记 效果图 代码为: <!DOCTYPE html> <html> <head&g ...
- 刚刚开通博客,分享Asp.Net的GridView的基本用法
包含有 数据的编辑,删除, 标题的添加,自定义分页,高亮显示鼠标所在,以及数据不足时添加空行 aspx页面代码 <asp:GridView ID="GridView1" ru ...
- ActiveReports 报表应用教程 (9)---交互式报表之动态排序
在 ActiveReports 中除了提供对数据源进行排序的功能之外,还提供了最终用户排序功能,最终用户可以对报表进行区域内排序和整个数据源排序,结合数据钻取.过滤等功能可以让用户更方便地分析报表数据 ...
- python输出excel能够识别的utf-8格式csv文件
http://blog.csdn.net/azhao_dn/article/details/16989777 可能大家都遇到过,python在输出的csv文件中如果有utf-8格式的中文,那么在使用e ...
- n个人作m幅画
题目网址: http://codeforces.com/problemset/problem/416/B A well-known art union called "Kalevich is ...
- Ahjesus Nodejs01 环境搭建及运行
访问http://nodejs.org/,根据系统选择下载文件,我用的win7 64 安装一路下一步直到完成 运行cmd输入node -v查看是否安装成功 成功会显示版本号 到此环境搭建完毕 ==== ...