来源: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 函数用法 Oracle 函数是Oracle数据库中的一种编程对象,它允许用户定义自己的函数,以便在SQL语句中调用。 Oracle 函数的用法可以分为以下几个方面: 函数调用限制 在 Oracle 中,函数可以在 SQL 语句中被...
### Oracle Function 返回结果集 #### 知识点概述 在Oracle数据库中,有时我们需要创建一个函数来返回一个结果集(即一系列记录),而非单一值。本文档中的代码示例展示了如何定义一个返回自定义表类型的函数`Ns_...
在"Oracle的几个Function实例"这个主题中,我们将探讨一些常见的Oracle函数,并通过实际示例来理解它们的用法。 1. ** NVL 函数**: NVL函数用于处理空值(NULL)。如果一个字段的值为NULL,NVL函数会将其替换为你...
ORACLE 操作 XML 的 function 函数 ORACLE 操作 XML 的 function 函数是指在 Oracle 数据库中对 XML 数据进行操作和处理的函数集。这些函数可以实现 XML 数据的解析、生成、转换、查询和验证等操作。下面是 ORACLE ...
这个函数使用了 Oracle 的管道化函数(pipelined function)来返回拆分后的结果。函数内部使用了一个循环来拆分字符串,每次循环都会将拆分后的结果返回给调用者。 最后,我们可以使用这个函数来拆分字符串。例如,...
通过阅读"ORACLE函数大全"文档,你可以更全面地理解每个函数的用法、参数及返回值,从而更好地应对各种数据库操作需求。在实际工作中,记得结合实际场景灵活运用,同时注意性能优化,避免过度使用复杂的函数导致查询...
1. **兼容性**:确保使用的Oracle版本支持Java存储过程。 2. **安全性**:在使用Java函数时,需要注意SQL注入等安全问题。 3. **性能考虑**:虽然CRC32算法本身较为高效,但在大量数据处理时仍需关注性能瓶颈。 4. *...
在这个“Oracle函数_JDBC常用写法”的主题中,我们将探讨Oracle的一些关键函数和JDBC的常见使用方法。 首先,让我们来看看`ORACLE函数大全.txt`中可能涵盖的内容。Oracle函数包括数学函数、字符串函数、日期时间...
本资料“Oracle_SQL_function”主要聚焦于Oracle中的常用函数及其使用方法,旨在帮助用户更好地理解和掌握在Oracle环境中进行SQL操作。 一、字符串函数 1. CONCAT():用于连接两个或更多字符串。例如,CONCAT('...
### Oracle Form Builder 内置Function介绍 ...掌握这些内置函数的应用方法对于成为一名高效的Oracle Forms开发者至关重要。希望本文能够帮助您更好地理解和运用这些内置函数,在实际项目中发挥出更大的作用。
本文将深入探讨Oracle自定义函数的概念、语法以及不同类型的参数(如in、out和inout)的使用方法。 ### Oracle自定义函数:概念与用途 Oracle自定义函数是在PL/SQL环境中编写的,用于执行特定计算或逻辑,并返回一...
本文主要介绍了Oracle存储过程的概念、创建和调用方法,以及如何使用DBLink实现跨库操作。存储过程提供了强大的数据库处理能力,而DBLink则使得不同数据库实例之间的交互变得更加方便和高效。掌握这些技术对于提高...
在Java编程中,调用Oracle数据库的存储过程和函数是常见的任务,这通常涉及到JDBC(Java Database Connectivity)API的使用。以下将详细介绍这个过程,包括必要的步骤、使用的类和方法,以及可能遇到的问题和解决...
虽然两者使用语法类似,但推荐使用OCI函数集,因为它不仅支持更广泛的Oracle数据库版本,还提供了更优的性能和功能。 在开始连接之前,需要确保PHP安装选项支持这两套函数。对于OCI函数来说,它依赖于Oracle8Call-...
自从Oracle9i 推出Any数据类型(ANYDATA, ANYDATASET, ANYTYPE)以来,其使用鲜有详细示例,在Google到Steve Hilker 的博文中实验学习,欢迎大家扩展。...
标题和描述中提到的“大型项目Oracle sql,function,procedures,package,cursor,job”涉及的是Oracle数据库管理和开发的核心概念。以下是对这些概念的详细解释: 1. **SQL(Structured Query Language)**:SQL...
`Oracle函数大全.chm`和`oracle函数.chm`可能包含所有内置函数的详尽列表,包括它们的用法、参数和返回类型。 2. **Oracle存储过程**: - 存储过程是一组可执行的SQL语句,封装在数据库中,可以带有参数,执行时可...
调用管道函数时,可以使用`SELECT * FROM TABLE(function_name)`的格式。为了确保能够实时看到每一条结果,需要先设置`arraysize`为1: ```sql SET arraysize 1; SELECT * FROM TABLE(f_pipeline_test); ``` 上述...
了解和掌握这些查询方法,数据库管理员可以有效地监控Oracle数据库的存储使用情况,以便进行合理的空间管理和性能优化。对于大型系统,定期检查表空间和数据文件的状态,预测并避免空间不足的情况,是保障数据库稳定...