`

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语句。

分享到:
评论

相关推荐

    oracle_function用法

    Oracle 函数用法 Oracle 函数是Oracle数据库中的一种编程对象,它允许用户定义自己的函数,以便在SQL语句中调用。 Oracle 函数的用法可以分为以下几个方面: 函数调用限制 在 Oracle 中,函数可以在 SQL 语句中被...

    oracle function 返回结果集

    ### Oracle Function 返回结果集 #### 知识点概述 在Oracle数据库中,有时我们需要创建一个函数来返回一个结果集(即一系列记录),而非单一值。本文档中的代码示例展示了如何定义一个返回自定义表类型的函数`Ns_...

    Oracle的几个Function实例

    在"Oracle的几个Function实例"这个主题中,我们将探讨一些常见的Oracle函数,并通过实际示例来理解它们的用法。 1. ** NVL 函数**: NVL函数用于处理空值(NULL)。如果一个字段的值为NULL,NVL函数会将其替换为你...

    ORACLE 操作XML的function函数

    ORACLE 操作 XML 的 function 函数 ORACLE 操作 XML 的 function 函数是指在 Oracle 数据库中对 XML 数据进行操作和处理的函数集。这些函数可以实现 XML 数据的解析、生成、转换、查询和验证等操作。下面是 ORACLE ...

    Oracle中实现Split函数功能

    这个函数使用了 Oracle 的管道化函数(pipelined function)来返回拆分后的结果。函数内部使用了一个循环来拆分字符串,每次循环都会将拆分后的结果返回给调用者。 最后,我们可以使用这个函数来拆分字符串。例如,...

    ORACLE函数大全

    通过阅读"ORACLE函数大全"文档,你可以更全面地理解每个函数的用法、参数及返回值,从而更好地应对各种数据库操作需求。在实际工作中,记得结合实际场景灵活运用,同时注意性能优化,避免过度使用复杂的函数导致查询...

    ORACLE CRC32函数

    1. **兼容性**:确保使用的Oracle版本支持Java存储过程。 2. **安全性**:在使用Java函数时,需要注意SQL注入等安全问题。 3. **性能考虑**:虽然CRC32算法本身较为高效,但在大量数据处理时仍需关注性能瓶颈。 4. *...

    Oracle函数_JDBC常用写法

    在这个“Oracle函数_JDBC常用写法”的主题中,我们将探讨Oracle的一些关键函数和JDBC的常见使用方法。 首先,让我们来看看`ORACLE函数大全.txt`中可能涵盖的内容。Oracle函数包括数学函数、字符串函数、日期时间...

    Oracle_SQL_function.rar_oracle

    本资料“Oracle_SQL_function”主要聚焦于Oracle中的常用函数及其使用方法,旨在帮助用户更好地理解和掌握在Oracle环境中进行SQL操作。 一、字符串函数 1. CONCAT():用于连接两个或更多字符串。例如,CONCAT('...

    Oracle Form Builder內置function

    ### Oracle Form Builder 内置Function介绍 ...掌握这些内置函数的应用方法对于成为一名高效的Oracle Forms开发者至关重要。希望本文能够帮助您更好地理解和运用这些内置函数,在实际项目中发挥出更大的作用。

    Oracle_function

    本文将深入探讨Oracle自定义函数的概念、语法以及不同类型的参数(如in、out和inout)的使用方法。 ### Oracle自定义函数:概念与用途 Oracle自定义函数是在PL/SQL环境中编写的,用于执行特定计算或逻辑,并返回一...

    oracle 存储过程 函数 dblink

    本文主要介绍了Oracle存储过程的概念、创建和调用方法,以及如何使用DBLink实现跨库操作。存储过程提供了强大的数据库处理能力,而DBLink则使得不同数据库实例之间的交互变得更加方便和高效。掌握这些技术对于提高...

    java调用oracle存储过程或者函数

    在Java编程中,调用Oracle数据库的存储过程和函数是常见的任务,这通常涉及到JDBC(Java Database Connectivity)API的使用。以下将详细介绍这个过程,包括必要的步骤、使用的类和方法,以及可能遇到的问题和解决...

    php连接oracle数据库的方法(测试成功)

    虽然两者使用语法类似,但推荐使用OCI函数集,因为它不仅支持更广泛的Oracle数据库版本,还提供了更优的性能和功能。 在开始连接之前,需要确保PHP安装选项支持这两套函数。对于OCI函数来说,它依赖于Oracle8Call-...

    Oracle Anydata 自定义对象UDT示例

    自从Oracle9i 推出Any数据类型(ANYDATA, ANYDATASET, ANYTYPE)以来,其使用鲜有详细示例,在Google到Steve Hilker 的博文中实验学习,欢迎大家扩展。...

    大型项目Oracle sql,function,procedures,package,cursor,job

    标题和描述中提到的“大型项目Oracle sql,function,procedures,package,cursor,job”涉及的是Oracle数据库管理和开发的核心概念。以下是对这些概念的详细解释: 1. **SQL(Structured Query Language)**:SQL...

    oracle函数大全与存储过程语法-中文.rar

    `Oracle函数大全.chm`和`oracle函数.chm`可能包含所有内置函数的详尽列表,包括它们的用法、参数和返回类型。 2. **Oracle存储过程**: - 存储过程是一组可执行的SQL语句,封装在数据库中,可以带有参数,执行时可...

    oracle管道函数用法

    调用管道函数时,可以使用`SELECT * FROM TABLE(function_name)`的格式。为了确保能够实时看到每一条结果,需要先设置`arraysize`为1: ```sql SET arraysize 1; SELECT * FROM TABLE(f_pipeline_test); ``` 上述...

    如何查询Oracle表空间和数据文件信息

    了解和掌握这些查询方法,数据库管理员可以有效地监控Oracle数据库的存储使用情况,以便进行合理的空间管理和性能优化。对于大型系统,定期检查表空间和数据文件的状态,预测并避免空间不足的情况,是保障数据库稳定...

Global site tag (gtag.js) - Google Analytics