您现在的位置: 万盛学电脑网 >> 程序编程 >> 数据库 >> oracle教程 >> 正文

Oracle中的子程序之二函数

作者:佚名    责任编辑:admin    更新时间:2022-06-22

函数是一个能够计算结果值的子程序,函数除了有一个RETURN子句之外,其它结构跟过程类似。值得 注意的是,Oracle中的函数必须提供返回值,如果你定义的子程序没有返回值,那么你不应该把它定义 成函数,而应该定义成过程。

一、函数

示例1:创建不带参数的函数

CREATE OR REPLACE FUNCTION currentTime  --没有参数,不能加括号
RETURN VARCHAR2
AS
BEGIN
RETURN TO_CHAR(SYSDATE,'YYYY"年"MM"月 "DD"日"HH24"时"MI"分"SS"秒"');
END;

既然函数有返回值,那么函数就可以在允许有表达式的地方出现(带有输出参数或输入输出参数的函 数除外)如:

DECLARE
myStr VARCHAR2(30);
BEGIN
myStr:=currentTime;
DBMS_OUTPUT.PUT_LINE(myStr);
END;

也可以使用SELECT语句查看函数的返回值:

SELECT currentTime FROM DUAL;

示例2:创建带有输入参数的函数

CREATE OR REPLACE FUNCTION getEmpNameByEmpNo(no [IN] NUMBER)
RETURN VARCHAR2
AS
name VARCHAR2(20);
BEGIN
SELECT eName INTO name FROM EMP WHERE empNo=no;
RETURN name;
EXCEPTION
WHEN NO_DATA_FOUND THEN
name:=' 无此员工';
RETURN name;
END;

示例3:创建带有输出参数的函数

CREATE OR REPLACE FUNCTION getEmpNameAndJobByEmpNo(no NUMBER,job OUT VARCHAR2)
RETURN VARCHAR2
AS
name VARCHAR2(20);
BEGIN
SELECT eName,job INTO name,job FROM EMP WHERE empNo=no;
RETURN name;
END;

调用方式如下:

DECLARE
job emp.job%TYPE;
BEGIN
DBMS_OUTPUT.PUT_LINE (getEmpNameAndJobByEmpNo(7788,job));
DBMS_OUTPUT.PUT_LINE(job);
END;

  • 共2页:
  • 上一页
  • 1
  • 2
  • 下一页