2019独角兽企业重金招聘Python工程师标准>>>

19-1:建立无参数的函数
CREATE OR REPLACE FUNCTION cur_datetime
RETURN VARCHAR2
IS
BEGIN
  RETURN TO_CHAR(sysdate,
    'YYYY"年"MM"月"DD"日"HH24"时"MI"分"SS"秒"');
END;
/
19-2:建立带有输入参数的函数
CREATE OR REPLACE FUNCTION get_sal(name VARCHAR2)
RETURN NUMBER
AS
  v_sal emp.sal%TYPE;
BEGIN
  SELECT sal INTO v_sal FROM emp WHERE upper(ename)=upper(name);
  RETURN v_sal;
END;
/
19-3:建立带有输出参数的函数
CREATE OR REPLACE FUNCTION get_info
(eno NUMBER,title OUT VARCHAR2) RETURN VARCHAR2
AS
  name emp.ename%TYPE;
BEGIN
  SELECT ename,job INTO name,title FROM emp
  WHERE empno=eno;
  RETURN name;
END;
/
19-4:建立带有输入输出参数的函数
CREATE OR REPLACE FUNCTION get_upd_info
(eno NUMBER,sal_chg IN OUT NUMBER) RETURN VARCHAR2
AS
  name emp.ename%TYPE;
BEGIN
  UPDATE emp SET sal=sal+sal_chg WHERE empno=eno
    RETURNING ename,sal INTO name,sal_chg;
  RETURN name;
END;
/

19-5:建立结果缓存函数
CREATE OR REPLACE FUNCTION get_name(no VARCHAR2)
RETURN NUMBER RESULT_CACHE RELIES_ON(emp)
AS
  v_name emp.ename%TYPE;
BEGIN
  SELECT ename INTO v_name FROM emp WHERE empno=no;
  RETURN v_name;
END;
/

19-6:调用无参数的函数
BEGIN
  dbms_output.put_line(cur_datetime);
END;
/
19-7:调用带有输入参数的函数
BEGIN
  dbms_output.put_line('工资:'||get_sal('&name'));
END;
/
19-8:调用带有输出参数的函数
DECLARE
  v_name emp.ename%TYPE;
  v_job emp.job%TYPE;
BEGIN
  v_name:=get_info(&eno,v_job);
  dbms_output.put_line('姓名:'||v_name||',岗位:'||v_job);
END;
/
19-9:调用带有输入输出参数的函数
DECLARE
  v_empno emp.empno%TYPE;
  v_name emp.ename%TYPE;
  v_salchg emp.sal%TYPE;
BEGIN
  v_empno:=&eno;
  v_salchg:=&incre;
  v_name:=get_upd_info(v_empno,v_salchg);
  dbms_output.put_line('姓名:'||v_name||',新工资:'||v_salchg);
END;
/
19-10:使用位置传递为参数传递变量和数据
SELECT get_sal('&name') 工资 FROM dual;
19-11:使用名称传递为参数传递变量和数据
VAR salary NUMBER
EXEC :salary:=get_sal(name=>'&name')
19-12:使用组合传递为参数传递变量和数据
VAR name VARCHAR2(10)
VAR sal_chg NUMBER
EXEC :sal_chg:=200
EXEC :name:=get_upd_info(&eno,:sal_chg)
PRINT name sal_chg
19-13:在sql语句中调用pl/sql函数
   SELECT get_sal(name=>'scott') salary FROM dual;
19-14:使用异常处理
CREATE OR REPLACE FUNCTION get_sal(name VARCHAR2)
RETURN NUMBER
AS
  v_sal emp.sal%TYPE;
BEGIN
  SELECT sal INTO v_sal FROM emp
   WHERE upper(ename)=upper(name);
  RETURN v_sal;
EXCEPTION
  WHEN NO_DATA_FOUND THEN
    RAISE_APPLICATION_ERROR(-20000,'该雇员不存在');
END;
/
19-15:使用纪录类型作为返回类型
CREATE OR REPLACE FUNCTION get_info
(eno NUMBER) RETURN emp%ROWTYPE
IS
  emp_record emp%ROWTYPE;
BEGIN
  SELECT * INTO emp_record FROM emp WHERE empno=eno;
  RETURN emp_record;
EXCEPTION
  WHEN NO_DATA_FOUND THEN
    RAISE_APPLICATION_ERROR(-20000,'该雇员不存在');
END;
/
DECLARE
  emp_record emp%ROWTYPE;
BEGIN
  emp_record:=get_info(&eno);
  dbms_output.put_line('姓名:'||emp_record.ename||',部门号:'||emp_record.deptno);
END;
/
19-16:使用集合类型作为返回类型
CREATE OR REPLACE TYPE ename_table_type IS TABLE OF VARCHAR2(10);
/
CREATE OR REPLACE FUNCTION get_name
(dno NUMBER) RETURN ename_table_type IS
  ename_table ename_table_type;
BEGIN
  SELECT ename BULK COLLECT INTO ename_table FROM emp WHERE deptno=dno;
  RETURN ename_table;
EXCEPTION
  WHEN NO_DATA_FOUND THEN
     RAISE_APPLICATION_ERROR(-20099,'该部门不存在');
END;
/
DECLARE
  ename_table ename_table_type;
BEGIN
  ename_table:=get_name(&dno);
  FOR i IN 1..ename_table.COUNT LOOP
    dbms_output.put_line('姓名:'||ename_table(i));
  END LOOP;
END;
/
19-17:删除函数
DROP FUNCTION get_name;
19-18:显示编译错误
SHOW ERRORS
19-19:确定函数状态
SELECT object_name FROM user_objects WHERE status='INVALID' AND object_type='FUNCTION';
19-20:编译函数
ALTER FUNCTION get_info COMPILE;
19-21:查看函数代码
SELECT text FROM user_source WHERE name='GET_INFO';

转载于:https://my.oschina.net/u/2336787/blog/1593502

oracle函数,oracle编写函数相关推荐

  1. 利用函数重载编写函数max_彻底理清重载函数匹配

    今日分享:直者内不以自欺,外不以欺人,心有所好恶而如其实以出之者也.--<中国哲学史> 前言 前面我们讲到了<什么是函数重载?>,有了函数重载之后,就需要确定某次调用需要选用哪 ...

  2. 利用函数重载编写函数max_c++笔记(函数重载)

    #include <iostream> #include <string> using namespace std; #include <windows.h>/*函 ...

  3. matlab static 函数,MATLAB编写函数的时候运行出错Attempt to add x to a static workspace

    stellari 发表于 2013-10-23 11:39 意思是说在函数当中,所有的变量的创建都必须直接写在可执行语句当中,也就是让MATLAB在还没有运行这个程序 ... 我还是不知道我的是哪里出 ...

  4. 自定义字符串查找函数c语言,(C语言自定义函数,/*编写函数实现在字符串pStr中查找子串pSub int subString( char* pStr, char* pSub);...

    求高手指点哪里有错!!!!十万火急急!!!!! #include #include int subString( char* pStr, char* pSub); char* sucString( c ...

  5. R语言笔记7:functions——编写函数所需的基础知识

    上一讲通过三个简单的例子体验了一下如何在R中写函数,下面来详细学习有关R语言中函数的知识. Functions in R 主要分三个部分来讲解函数: 编写函数所需的基础知识 相关语法作用域 R语言作用 ...

  6. 基于MATLAB的数论运算与编写函数(附完整代码)

    目录 一. 基本数论运算 例题1 例题2 例题3 例题4 二. 循环结构 2.1 for 结构 2.2 while结构 例题5 例题6 例题7 三. 转移结构 例题8 四. 开关结构与试探结构 4.1 ...

  7. C语言计算级数fun,c语言编程 编写函数fun(),它的功能是:计算和输出下列级数的和....

    用C语言编程,已知f(x)=(1+x^2),编写函数用梯形法计算f(x)在区间[a,b]上的定积分 #includevoidmain(){doublei,j;doublea,b,c=0;printf( ...

  8. c语言中求大于的函数,c语言编写函数,求一组数中大于平均值的数的个数.

    C语言编写程序 给定一组数,求大于0,等于0,小于0的数据个数 #define N 10 main(){int num1=0,num2=0,num3=0,i;for(i=0;i 一道C语言题目:求一组 ...

  9. oracle数据库存储函数,Oracle数据库存储过程

    一.定义 所谓存储过程,就是一组用于完成特定数据库功能的SQL语句集,该SQL语句集经过编译后存储在数据库系统中.使用的时候,用户通过指定已经定义的存储过程名字并给相应的存储过程参数来调用并执行它,从 ...

  10. oracle substr(table),oracle中的substr()函数

    SUBSTR(cExpression,nStartPosition [,nCharactersReturned]) 其中,cExpression指定要从其中返回字符串的字符表达式或备注字段: nSta ...

最新文章

  1. js中 replace(/\//g, '') 什么作用. 正则表达式
  2. 寒冷的高纬度——我的梦开始的地方
  3. .gitignore失效 无法忽略node_modules问题
  4. PeriodicityText in CRM Fiori SalesPipeline
  5. assert函数_PHP 之 assert()函数
  6. 架构设计-数据访问层简述
  7. 圆形取景框 相机_据说这款设备可以使老旧单反相机解决无线联机拍摄方案
  8. js 高级应用 自定义事件
  9. Python+tkinter实现简单的登录界面
  10. nginx-rtmp一些指令
  11. 前端项目——当当图书网(javaScript)
  12. 无人机航摄地面站航线设计主要参数
  13. 硬盘的结构和介绍,硬盘MBR详细介绍(超详细彩图)
  14. codeforces 337 D(树的直径性质)
  15. 呼和浩特民族学院计算机系宿舍,呼和浩特民族学院有个“励志寝室”
  16. Photoshop 入门教程「2」了解 Photoshop 工作区
  17. 石墨文档支持的几种markdown格式
  18. 软考哪个证书最有用?
  19. 浏览器清理缓存快捷键
  20. Vector3类详解

热门文章

  1. SAP RETAIL系统与制造业SAP系统上关于补货的配置
  2. SAP PM 初级系列16 - 设备相关的Asset号
  3. 「GAN优化」如何学会以正确的姿势定量评价你的GAN
  4. 理解学习率以及如何提升深度学习的性能
  5. SAP MM 同一个序列号可以被多次用在交货单发货过账?
  6. 自然语言处理基础技术之词性标注
  7. 诗人般的机器学习,ML工作原理大揭秘
  8. 吴恩达机器学习笔记 —— 7 Logistic回归
  9. 干货丨盘点人工智能从业者必备的10个深度学习方法
  10. latex中的\label标签的作用