Oracle学习笔记之用户自定义函数
自定义函数语法格式:
用户自定义的函数,可以直接在sql语句中直接调用,并且任何一个funciton都必须有返回值,而且该函数声明后,是保存在数据端的,我们随时可以使用;注意:函数只能有一个返回值,如果想返回多个数据,可通过out类型参数将数据传到函数外部;
例如:定义一个函数,该函数根据员工姓名以及部门编号,查找该员工是否在emp中存在,如果存在返回true否则返回false;
createorreplacefunction myFunction(mName invarchar2,mNo innumber)returnbooleanis
flag boolean:=false;
total number;
begin
selectcount(*)into total from emp where emp.ename=mName and emp.deptno=mNo;
if total>0then
flag:=true;
else flag:=false;
endif;
return flag;
end myFunction;
测试:
-- Created on 2017/10/19 by ADMINISTRATOR
declare
f boolean;
begin
f:=myfunction('SMITH',30);
if f then dbms_output.put_line('true');
else dbms_output.put_line('false');
endif;
end;
例如:定义一个函数,该函数根据员工姓名以及部门编号,查找该员工是否在emp中存在,如果存在返回true否则返回false;如果存在该员工,那么就将该条数据拿到函数外面;
createorreplacefunction myFunction(mName invarchar2,mNo innumber,msg out emp%rowType)returnbooleanis
flag boolean:=false;
total number;
begin
selectcount(*)into total from emp where emp.ename=mName and emp.deptno=mNo;
if total>0then
flag:=true;
--将该条数据赋值给msg变量
select emp.*into msg from emp where emp.ename=mName and emp.deptno=mNo;
else flag:=false;
endif;
return flag;
end myFunction;
测试:
declare
f boolean;
msg emp%rowtype;
begin
f:=myfunction('SMITH',20,msg);
if f then dbms_output.put_line('true');
else dbms_output.put_line('false');
endif;
dbms_output.put_line(msg.empno||':'||msg.ename||':'||msg.hiredate);
end;
例如:定义一个函数,该函数根据员工姓名以及部门编号,查找该员工是否在emp中存在,该函数返回值为该条记录;
createorreplacefunction myFunction(mName invarchar2,mNo innumber,msg out emp%rowType)return emp%rowtypeis
flag boolean:=false;
total number;
begin
selectcount(*)into total from emp where emp.ename=mName and emp.deptno=mNo;
if total>0then
flag:=true;
--将该条数据赋值给msg变量
select emp.*into msg from emp where emp.ename=mName and emp.deptno=mNo;
else flag:=false;
endif;
return msg;
end myFunction;
测试:
-- Created on 2017/10/19 by ADMINISTRATOR
declare
msg emp%rowtype;
begin
msg:=myfunction('SMITH',20,msg);
dbms_output.put_line(msg.empno||':'||msg.ename||':'||msg.hiredate);
end;
Oracle学习笔记之用户自定义函数的更多相关文章
- Oracle学习笔记:trunc函数
在Oracle中可以使用trunc函数进行日期截取和数字截取,具体使用方法如下: 1.trunc(for dates) 日期截取 语法:trunc(date,[fmt]) select trunc(s ...
- Oracle学习笔记:wm_concat函数合并字段
在Oracle中使用wm_concat(column)可以实现字段的分组合并,逗号分隔. 例如,现有表temp_cwh_test: -- 创建临时表 create table temp_cwh_tes ...
- Oracle学习笔记_03_单行函数
1.SQL函数: 单行函数.多行函数 单行函数: 操作数据对象 接受参数返回一个结果 只对一行进行变换 每行返回一个结果 可以转换数据类型 ...
- Oracle 学习笔记 18 -- 存储函数和存储过程(PL/SQL子程序)
PL/SQL子程序 它包含了函数和过程.此功能是指用户定义的函数.和系统功能是不同的.子程序通常完成特定的功能PL/SQL座.,能够被不同的应用程序多次调用.Oracle提供能够把PL/SQL程序存储 ...
- Oracle学习笔记:decode函数
decode函数主要作用:将查询结果翻译成其他值(即以其他形式变现出来) 使用方法: SELECT DECODE(colunm_name,值1,翻译值1,值2,翻译值2……值n,翻译值n,缺省值) F ...
- Oracle学习笔记_05_分组函数
组函数:avg sum max min count group by having group by 增强:rollup cube grouping groupi ...
- Oracle学习笔记之四sp1,Oracle 11g的常用函数
从Oracle学习笔记之四,SQL语言入门中摘出来的,独立成一章节 3.1 字符类函数 ASCII(c)和CHR(i) 分别用于返回一个字符的ASCII码和返回给定ASCII值所对应的字符. C ...
- oracle学习笔记第一天
oracle学习笔记第一天 --oracle学习的第一天 --一.几个基础的关键字 1.select select (挑选) 挑选出显示的--列--(可以多列,用“,”隔开,*表示所有列),为一条 ...
- Oracle学习笔记之四,SQL语言入门
1. SQL语言概述 1.1 SQL语言特点 集合性,SQL可以的高层的数据结构上进行工作,工作时不是单条地处理记录,而对数据进行成组的处理. 统一性,操作任务主要包括:查询数据:插入.修改和删除数据 ...
随机推荐
- 201521123003《Java程序设计》第2周学习总结
1. 本章学习总结 你对于本章知识的学习总结 学习了java中各种数据类型的使用 掌握了基本类型的转换 了解string和stringbuilder的区别以及字符串池的原理 学会了使用package管 ...
- postman: 用于网页调试和发送Http请求的chrome插件
一 简介 Postman 是一款功能超级强大的用于发送 HTTP 请求的 Chrome插件 .做web页面开发和测试的人员应该是无人不晓无人不用!其主要特点 特点: 创建 + 测试:创建和发送任何的H ...
- Oracle--新建用户以及赋予的权限
1, 以dba方式登录Oracle 2, 创建用户,Users-->New ... 输入用户名和密码 3, 赋予connect/resource角色 4, 赋予该用户 对视图操作的相关权限 以下 ...
- mybatis-mapper文件介绍
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-/ ...
- 检测Linux硬盘IO数据
首先安装sysstat(有些系统会预装): apt install sysstat 然后使用命令: iostat -x -k 2 x选项用于显示和io有关的扩展数据 k某些使用block为单位的字段改 ...
- [UIKit学习]01.关于UIView,frame,bounds,center
UIView是Cocoa大多控件的父类,本身不带事件. UIView的常见用法 @property(nonatomic,readonly) UIView *superview; 获得自己的父控件对象 ...
- Opengl4.5 中文手册—A
因为opengl API 比较庞大,网络上还没有完整的.较新的opengl中文手册 这对很多人很不方便,所以整理了这一系列,用于帮助大家"快速浏览最新的opengl api" 为了 ...
- 编码格式简介:ASCII码、ANSI、GBK、GB2312、GB18030和Unicode、UTF-8,BOM头
编码格式简介:ASCII码.ANSI.GBK.GB2312.GB18030和Unicode.UTF-8,BOM头 二进制: 只有0和1. 十进制.十六进制.八进制: 计算机其实挺笨的,它只认识0101 ...
- ThinkPHP中:使用递归写node_merge()函数
需求描述: 现有一个节点集合 可以视为一个二维数组 array(5) { [0] => array(4) { ["id"] => string(1) "1&q ...
- LNMP环境源码搭建
以前LNMP环境是由运维搭建,自己搭建的时候查找了很多资料,这是我见过的最棒的资料,将过程记录下来分享给大家 为啥使用LNMP而不是LAMP下面来谈谈Nginx的技能 Nginx是一个小巧而高效的Li ...