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 ...
随机推荐
- Java魔法堂:String.format详解
目录 一.前言 二.重载方法 三.占位符 四.对字符.字符串进行格式化 五.对整数进行格式化 六.对浮点数进行格式化 七.对日期时间进行格式化 ...
- ASP.NET MVC5---通过QueryString传值
1.首先我们来看看普通的传值是啥样的.如图所示,我们普通的传值是这样的 public ActionResult Edit(int?id) { if (id == null) { return new ...
- 利用name或id属性设置页面跳转的锚点
理论准备 网页中的链接按照链接路径的不同,可以分为3种类型,分别是内部类型.锚点链接和外部链接: 按照使用对象的不同,网页中的链接又分为文本超链接,图像超链接,E-ma ...
- table.appand(行数据) datagrid分页
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...
- 【JS复习笔记】05 正则表达式
好吧,正则表达式,我从来没记过.以前要用的时候都是网上Copy一下的. 这里还是扯一下吧,以后要是有要用到的正则表达式那么就收集到这个帖子里.(尽管我认为不会,因为我根本就不是一个专业的前端,我只是来 ...
- PhpWind 8.7中禁止后台管理员随意修改会员用户名功能
有人反映PHPWind 8.7中后台可以直接修改用户名的功能太过随意,干脆禁掉. OK,研究一下他的代码,admin/usermange.php tempalate/admin/usermange. ...
- 那些教程没有的php3-命名空间
php.net (PHP 5 >= 5.3.0, PHP 7) 定义命名空间 虽然任意合法的PHP代码都可以包含在命名空间中,但只有以下类型的代码受命名空间的影响,它们是:类(包括抽象类和tra ...
- sublimeCodeIntel 的配置
在项目的根目录目录下建立.codeintel/config 但是在windows 需要进入dos 环境下建立.以点开头的文件夹和文件.资源管理器不允许创建点开头的文件或文件夹,但在命令提示符下是可以的 ...
- SQL数据库基础(五)
字符串函数: 时间日期函数: SELECT @@DATEFIRST AS '1st Day', DATEPART(dw, GETDATE()) AS 'Today' SELECT GETDATE() ...
- 初学Node(四)事件循环
Node中的事件循环 事件循环是Node的核心,正是因为有了事件循环JS才能够在服务端占有一席之地.JS是一种单线程语言,但是它的执行环境是多线程的在加上JS的事件驱动这一特点,使使JS在执行的过程中 ...