oracle function用法

来源:http://www.blogjava.net/stevenjohn/archive/2012/08/12/385324.html

 

函数调用限制
1、SQL语句中只能调用存储函数(服务器端),而不能调用客户端的函数
2、SQL只能调用带有输入参数,不能带有输出,输入输出函数
3、SQL不能使用PL/SQL的特有数据类型(boolean,table,record等)
4、SQL语句中调用的函数不能包含INSERT,UPDATE和DELETE语句

1.function函数的语法如下:

      create or replace function function_name (

       argu1 [mode1] datatype1, --定义参数变量

       argu2 [mode2] datatype2 --定义参数变量

   ) return datatype --定义返回的数据类型

  is 

  begin

  end;

执行 var v1 varchar2(100)
      exec :v1:=function_name

2.不带任何参数的定义

create or replace function get_user 

return varchar2 

is 

Result varchar2(50); --定义变量

begin 

select username into Result from user_users; 

return(Result); --返回值

end get_user;

3.带有in参数的

create or replace function get_sal(

empname in varchar2

) return number 

is 

Result number; 

begin 

select sal into Result from emp where ename=empname; 

return(Result); 

end;

执行: SQL> var sal number
SQL> exec :sal:=get_sal('scott');

4.带out参数的

create or replace function get_info(

e_name varchar2,

job out varchar2

) return number 

Is

Result number; 

begin 

select sal,job into Result,job from emp where ename=e_name;
return(Result);
end;

执行: SQL> var job varchar2(20)
SQL> var dname varchar2(20)
SQL> exec :dname:=get_info('SCOTT',:job)

5.带in out参数的

6.函数调用举例

create or replace function f_sys_getseqid(
    v_seqname           IN VARCHAR2,
    v_provincecode      IN VARCHAR2    --省编码
) return Varchar2
IS
    iv_date             VARCHAR2(8);
    iv_seqname          VARCHAR2(50);
    iv_sqlstr           VARCHAR2(200);
    iv_seq              VARCHAR2(8);
    iv_seqid            VARCHAR2(16);
BEGIN
    iv_seqname := LOWER(TRIM(v_seqname));
    iv_sqlstr := 'SELECT '||iv_seqname||'.nextval FROM DUAL';
    EXECUTE IMMEDIATE iv_sqlstr INTO iv_seq;--执行动态的sql语句,执行相似的一组语句
    IF v_seqname = 'SEQ_FUNCROLE_ID' THEN
      iv_seqid:= 'ESS' || LPAD(iv_seq,5,'0');
    ELSE
      SELECT substrb(v_provincecode,1,2)||TO_CHAR(SYSDATE,'yymmdd') INTO iv_date FROM DUAL;
      iv_seqid:= iv_date || LPAD(iv_seq,8,'0');
    END IF;
    RETURN iv_seqid;
EXCEPTION
    WHEN OTHERS THEN
    RETURN NULL;
END;

  调用方式如下:

    SELECT TO_NUMBER(F_SYS_GETSEQID('SEQ_TERMTRADE_ID', V_PROVINCE_CODE)) INTO V_BATCH_ID FROM DUAL;

   EXECUTE IMMEDIATE的说明:执行动态的sql语句。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Oracle Function函数是一种可重复使用的代码块,用于执行特定的任务并返回一个值。它可以接受参数,可以在SQL语句中使用,也可以在PL/SQL程序中调用。Function函数可以用于计算、转换和验证数据,以及执行其他复杂的业务逻辑。在Oracle数据库中,Function函数是非常常用的一种编程工具,可以大大提高开发效率和代码的可维护性。 ### 回答2: Oracle Function函数是一个可重复使用的代码块,用于执行特定的计算或返回特定的值。Function函数类似于存储过程,但它们只返回单个值而不是结果集。Function函数可以包含任意数量的参数,并基于这些参数返回一个具体的值。它们也可以嵌套在SQL查询中使用,以进行复杂计算。 要使用Function函数,首先需要创建该函数。使用CREATE FUNCTION语句创建Function函数,语法如下: ``` CREATE [OR REPLACE] FUNCTION function_name (parameter1 [IN/OUT] datatype1, parameter2 [IN/OUT] datatype2,...) RETURN datatype AS declare -- 使用declare块定义变量 BEGIN -- SQL语句或PL/SQL代码 RETURN value; END; ``` 其中function_name是你要创建的Function函数名称,parameter1、parameter2等是函数的参数列表,datatype1、datatype2等是参数的数据类型。RETURN datatype指定Function函数的返回值类型。begin和end之间是Function函数的主体代码,可以包含SQL语句和PL/SQL代码。值得注意的是,如果要在函数中使用变量,必须在函数头中定义这些变量。 使用Function函数时,可以基于其定义传递相应的参数。以下是一个使用Function函数的例子: ``` CREATE OR REPLACE FUNCTION get_total_salary(employee_id IN NUMBER) RETURN NUMBER AS total_salary NUMBER(10, 2); BEGIN SELECT SUM(salary) INTO total_salary FROM employee WHERE employee_id = employee_id; RETURN total_salary; END; SELECT get_total_salary(1001) FROM dual; ``` 上述代码中的Function函数名为get_total_salary,它带有一个employee_id参数,并返回该员工的总工资。该函数的主体中使用了SQL语句来计算总工资,SELECT FROM和INTP子句中使用的变量total_salary必须在函数头中定义。最后,SELECT语句从该函数中获取总工资值。 在Oracle数据库管理中,Function函数是一个非常重要的概念,在很多业务场景中均得到广泛的应用。通过掌握Function函数的使用方法,可以更加高效地进行数据库编程和数据处理。 ### 回答3: Oracle Function函数是一种可编程的对象,用于在Oracle数据库中执行特定操作并返回值。Function函数可以接受一个或多个输入参数,在这些参数上执行任何所需的操作,并返回一个结果值。 Function函数是Oracle数据库中的重要组件,可以处理各种数据类型和计算操作,如日期、字符串、数字等。Function函数的主要优势在于其可重用性和灵活性,因为它们可以在不同的查询和应用程序中使用。 创建Function函数需要使用CREATE FUNCTION语句,该语句指定函数名称、输入参数和返回结果类型。例如,创建一个名为MY_FUNCTION的函数: CREATE FUNCTION MY_FUNCTION (p1 number, p2 number) RETURN number IS BEGIN RETURN p1 + p2; END; 在上面的示例中,MY_FUNCTION函数接受两个数字参数p1和p2,并返回它们的和。 调用Function函数有两种方式。首先,可以使用SELECT语句显式调用Function函数: SELECT MY_FUNCTION(2,3) FROM DUAL; 其次,Function函数可以嵌入SQL查询或PL/SQL块中: DECLARE result number; BEGIN result := MY_FUNCTION(2,3); DBMS_OUTPUT.PUT_LINE(result); END; Function函数也可以作为过程或其他函数的参数传递,并且它们可以返回复杂的数据类型,如记录和表。 总的来说,Oracle Function函数提供了数据库开发中极大的灵活性和功能,尤其对于数据操作和计算方面。熟练掌握Oracle Function函数的用法,可以提高数据库开发的效率和设计水平。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值