技术开发 频道

Oracle概念:过程、函数、程序包

  函数

  与过程相似,遵循了相同的规则。

  参数传递:只能带有in参数,不能使用out, in out 参数

  函数的主要特性是必须返回一个值。

  语法:

  CREATE [OR REPLACE] FUNCTION function_name (参数)

  RETURN datatype

  IS | AS

  [PRAGMA AUTONOMOUS_TRANACTION;] --声明自主事务处理。

  [本地变量声明]

  BEGIN

  执行语句部分

  [EXCEPTION]

  错误处理部分

  END[name];

  /

  返回值:

  定义函数的时候必须使用RETURN datatype 子句,表示函数要返回的数据类型。

  在函数体中的任何地方,都可以使用 RETURN <表达式>返回值,类型要和定义中的相同。

  CREATE OR REPLACE

  FUNCTION my_func

  RETURN varchar2

  As

  Begin

  Return ‘HELLO, WORLD’;

  END;

  /

  调用函数:

  用户必须要获取返回值,所以调用时,要声明一个局域变量:

  set serveroutput on

  declare

  l_str varchar2(100) := null;

  begin

  l_str := my_func;

  dbms_output.put_line(l_str);

  end;

  /

  也可以将函数用作其他过程以及函数的IN参数。

  Create or replace

  Procedure show_it(p varchar2) as

  Begin

  Dbms_output.put_line(p);

  End;

  /

  exec show_it(my_func);

  练习:

  编写一个函数ITE,实现:boolean expression ? true_value: false_value

  输入一个表达式expression, IF正确,THEN输出true_value;ELSE,输出false_value

  分析:3个in 参数,一个boolean, 2个varchar2

  create or replace

  function ite(

  p_expression Boolean,

  p_true varchar2,

  p_false varchar2)

  return varchar2

  as

  begin

  if p_expression then

  return p_true;

  end if;

  return p_false;

  end;

  /

  exec dbms_output.put_line(ite(1=2, ‘Equal’,’Not equal’));

0
相关文章