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 ...
随机推荐
- 后缀数组 --- WOj 1564 Problem 1564 - A - Circle
Problem 1564 - A - Circle Problem's Link: http://acm.whu.edu.cn/land/problem/detail?problem_id=156 ...
- error LNK1281: 无法生成 SAFESEH 映像 LNK2026 模块对于 SAFESEH 映像是不安全的 VS2015 /win10
平台 VS2015 /win10 错误 LNK1281 无法生成 SAFESEH 映像. 错误 LNK2026 模块对于 SAFESEH 映像是不安全的. 将 release 改成 debug
- 重构if...else...或者switch程序块
我们在开发asp.net时,经常有使用if...else...或者是使用switch来进行多个条件判断.如下面这篇<用户控件(UserControl) 使用事件 Ver2>http://w ...
- winform去掉右上角关闭按钮
一种方法是可以在窗体的属性面板将窗体的 ControlBox属性设置为false,或者在窗体的构造函数中这样写: public Form1() { InitializeComponent(); thi ...
- [CLR via C#]13. 接口
一.类和接口继承 在Microsoft.Net Framwork中,有一个名为System.Object的类,它定义了4个公共实例方法:ToString, Equals, GetHashCode和Ge ...
- c#调用Aspose.Word组件操作word 插入文字/图片/表格 书签替换套打
由于NPOI暂时没找到书签内容替换功能,所以换用Apose.Word组件. using System; using System.Collections.Generic; using System.C ...
- DotNetCore跨平台~性能测试~可以放心使用了
使用dotnetCore发布站点后,它的处理请求能力不逊色IIS等大型服务的能力,号称每秒能处理115万个请求,太牛X了也. 先看看它支持的数据库 以下主流数据库都是为支持的 Microsoft SQ ...
- BI之SSAS完整实战教程3 -- 创建第一个多维数据集
上一篇我们已经完成了数据源的准备工作,现在我们就开始动手,创建第一个多维数据集(Cube). 文章提纲 使用多维数据集向导创建多维数据集 总结Cube设计器简介 维度细化 总结 一.使用向导创建多维数 ...
- 【jQuery基础学习】07 jQuery表单插件-Form
作用:jQuery Form插件的作用是为了让我们可以很方便地用ajax的方式提交表单,从而使我们提交表单的时候页面不用进行刷新. 它的核心方法是ajaxForm()和ajaxSubmit() 升级表 ...
- WinForm给控件加入hint文字
本文代码主要是参考别人的,仅为个人记录,方面后续使用~ 效果图: 主要代码在一个Win32Utility类中,代码如下: public static class Win32Utility { [Dll ...