Oracle函数

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

1. 该函数接受3个可选参数,返回3个数字的和
CREATE OR REPLACE FUNCTION add_three_numbers
(
a NUMBER:=0, b NUMBER:=0, c NUMBER:=0
)
RETURN NUMBER IS
BEGIN
RETURN a+b+c;
END;
2.函数的调用:


函数的语法及举例:

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)

Tips:
前两天看到有人在pub上问sqlplus中通过define和variable定义的变量的区别。其实define定义的我
理解不是变量而是字符常量,通过define定义之后,在通过&或者&&引用的时候不需要输入了,仅此而已。
oracle在执行的时候自动用值进行了替换;而variable定义的是绑定变量

http://blog.csdn.net/wanghai__/article/details/4778343

 

时间: 2024-11-01 17:56:11

Oracle函数的相关文章

PHP3中使用ORACLE函数的使用说明

oracle|函数 (作者:星空浪子 zhongcfido@126.com)OCIDefineByName让 SELECT 指令可使用 PHP 变数. 语法: boolean OCIDefineByName(int stmt, string ColumnName, mixed &variable, int [type]); 传回值: 布林值 函式种类: 资料库功能 内容说明 本函式用来定义指定的 PHP 变数,使其能供 SQL 指令中的 SELECT 指令使用.在大小写的问题上要注意一下,因为

PHP中使用ORACLE函数的使用说明

oracle|函数 OCIDefineByName让 SELECT 指令可使用 PHP 变数. 语法: boolean OCIDefineByName(int stmt, string ColumnName, mixed &variable, int [type]); 传回值: 布林值 函式种类: 资料库功能 内容说明 本函式用来定义指定的 PHP 变数,使其能供 SQL 指令中的 SELECT 指令使用.在大小写的问题上要注意一下,因为 Oracle 资料库中的栏位名称其实都是大写的名字.参数

Oracle函数列表速查

oracle|函数  PL/SQL单行函数和组函数详解 函数是一种有零个或多个参数并且有一个返回值的程序.在SQL中Oracle内建了一系列函数,这些函数都可被称为SQL或PL/SQL语句,函数主要分为两大类: 单行函数 组函数 本文将讨论如何利用单行函数以及使用规则. SQL中的单行函数 SQL和PL/SQL中自带很多类型的函数,有字符.数字.日期.转换.和混合型等多种函数用于处理单行数据,因此这些都可被统称为单行函数.这些函数均可用于SELECT,WHERE.ORDER BY等子句中,例如下

ORACLE函数大全

oracle|函数 SQL中的单记录函数1.ASCII返回与指定的字符对应的十进制数;SQL> select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') space from dual;        A         A      ZERO     SPACE--------- --------- --------- ---------       65        97        48        32 2.CHR给出整

[收藏]ORACLE函数大全

oracle|函数 SQL中的单记录函数1.ASCII返回与指定的字符对应的十进制数;SQL> select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') space from dual;         A         A      ZERO     SPACE--------- --------- --------- ---------       65        97        48        32 2.CHR给出

vb 调用 Oracle 函数返回数据集的例子

oracle|函数|数据 PL/SQL 代码:CREATE OR REPLACE PACKAGE "SCOTT"."PKG_TEST" AS       TYPE myrcType IS REF CURSOR;       FUNCTION get(strbarcode VARCHAR) RETURN myrcType;END pkg_test; CREATE OR REPLACE PACKAGE BODY "SCOTT"."PKG_T

oracle函数问题,求大神指导

问题描述 oracle函数问题,求大神指导 2.创建一个交易的函数(20分)要求:调用函数需要传递账号.密码.交易类型.交易金额四个参数若交易类型为"存款",则不对密码进行验证:若交易类型为"支取"则必须对密码进行验证(密码不正确需要给出相应的提示信息),同时还要验证账号余额是否充足(余额不足给出相应的提示信息).交易完成后函数返回最新的账号余额信息. 解决方案 使用java对oracle数据库中的表进行处理实现上面的功能?

oracle函数和存数过程转成mysql

问题描述 oracle函数和存数过程转成mysql create or replace function public_f_get_bsc012 ( v_id in varchar2 ) return varchar2 as v_temp varchar2(200); begin select bsc012 into v_temp from sc05 where bsc010=v_id; return v_temp; exception when others then return ''; e

oracle函数返回游标和记录的问题

问题描述 oracle函数返回游标和记录的问题 编写一个函数,要求通过编号显示员工的姓名和工资,返回记录或者游标需要在函数内定义还是定义函数之前定义?表结构: table emp( eno char(6) ename char(6) sal number(5));

oracle函数赋值判断语句

问题描述 oracle函数赋值判断语句 作为一个新手自己定义了个函数发现老是有一个错误: create or replace function gd2(account in gt.account%TYPE,password in GT.PASSWORD%TYPE) return VARCHAR2 is begin if(gd(account ,password)==1)then dbms_output.put_line('登陆成功'); else dbms_output.put_line('不存