`
kely39
  • 浏览: 49311 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

oracle函数和存储过程

阅读更多
--1、自定义函数
create or replace function 函数名(参数1 参数类型1,参数2 参数类型2,……) return 返回值类型 as
begin
  函数定义
end 函数名;

--实例1
select * from test1;
create or replace function getMaxTage return number as
begin
  declare maxAge number;
  begin
    select max(tage) into maxAge from test1;
    return maxAge;
  end;
end getMaxTage;
--实例1调用
begin
  dbms_output.put_line('表test1中年纪最大的是:'||getMaxTage());
end;
--执行动态拼接SQL语句:execute immediate sql语句……

--为了提高数据库效率利用函数的确定性:在return 返回类型之后,as之前添加deterministic关键字,前提条件是函数传入参数
--一样时返回相同,第二次调用函数是数据库就用前一个计算的值,而不需要再重新计算一次. 

--自定义函数+游标
create or replace function row2column(sqlString varchar2)
return varchar2 as
begin 
  declare type cu_type is ref cursor;
  temp_cursor cu_type;
  temp_row1 varchar2(20);
  temp_row2 varchar2(10);
  v_result varchar2(200);
  begin
    open temp_cursor for sqlString;
    fetch temp_cursor into temp_row1,temp_row2;
    while temp_cursor%found loop
      v_result := v_result || temp_row1 || ':' || temp_row2 || ';';
      fetch temp_cursor into temp_row1,temp_row2;
    end loop;
    return v_result; --rtrim(v_result,',')
  end;
end row2column;
--调用
select row2column('select tname,tage from test1 where tage >30') v_result from dual;

--2、存储过程
create or replace procedure 存储过程名称(参数1 in/out 参数类型1,参数2 in/out 参数类型2,……) as
begin
  存储过程定义
end 存储过程名称;
--参数类型:
--in只进步出(表明in参数不能再存储过程内部进行修改)
--out只出不进(out参数实际作为存储过程执行结果的出口,必须使用变量为参数,变量的作用相当于占位符,只是接收存储过程内部赋值)
--in out 典型场景为交换两个变量值
--存储过程添加调试测试
create or replace procedure insertTest1(tname in varchar2,tage in number,
                                        ori_count out number,cur_count out number) as
begin 
  declare v_max_id number;
    begin
      if(tname is null or length(tname)=0)then
         return;
      end if;
      if(tage<10 or tage>30)then
         return;
      end if;
      select count(1) into ori_count from test1;
      select max(tid) into v_max_id from test1;
      insert into test1 values(v_max_id+1,tname,tage,'test1');
      select count(1) into cur_count from test1;
    end;
end insertTest1;

--程序包
create or replace package pkg_test as
  function getMaxTage return number;
  procedure insertTest1(tname in varchar2,tage in number,
                         ori_count out number,cur_count out number);
end pkg_test;

--
create or replace function is_date(params varchar2) return varchar2 is
d date;
begin
  d:=to_date(nvl(params,''),'yyyy-mm-dd hh24:mi:ss');
  return 'Y';
  exception
    when others then
      return 'N';
end;

select is_date('20101010') from dual;

 

1
3
分享到:
评论

相关推荐

    oracle oracle函数 存储过程

    在学习和使用Oracle函数和存储过程时,建议从以下几个方面入手: 1. 熟悉基本的SQL语法和操作,这是使用函数和存储过程的前提。 2. 精读Oracle帮助文档,理解每个函数的用法和存储过程的结构。 3. 练习编写简单的...

    oracle函数大全及存储过程语法.rar

    本资源"oracle函数大全及存储过程语法.rar"显然是一个关于Oracle函数和存储过程的详细指南,涵盖了各种常用和高级的函数以及存储过程的编写和使用方法。 一、Oracle函数 Oracle提供了丰富的内置函数,包括数值函数...

    oracle 函数大全 存储过程语法

    本篇文章将针对“Oracle函数大全”和“存储过程语法”进行深入的探讨。 首先,Oracle函数是预定义的代码块,它们接收输入参数并返回一个值。函数分为内置函数和自定义函数。内置函数包括数学函数(如:ROUND、TRUNC...

    如何调用oracle的函数、存储过程

    调用Oracle函数和存储过程通常涉及以下步骤: 1. **创建函数和存储过程**: 使用SQL的CREATE FUNCTION或CREATE PROCEDURE语句来定义它们。例如: ```sql CREATE OR REPLACE FUNCTION my_function(param1 IN ...

    oracle函数大全及存储过程语法

    总结起来,Oracle函数和存储过程是数据库管理和开发中的重要工具,掌握它们的语法和应用对于优化数据库性能、提升开发效率以及保证数据安全具有重要意义。在实际工作中,应根据具体需求灵活运用,以实现更高效、更...

    oracle函数大全及存储过程语法 chm

    Oracle数据库是世界上最广泛使用的数据库系统之一,其...总的来说,Oracle函数和存储过程是数据库开发的核心工具,通过深入学习和实践,你将能够更有效地管理和操作Oracle数据库,提升你的数据库技能和项目实施能力。

    oracle函数调用存储过程

    ### Oracle函数调用存储过程详解 #### 背景与目的 在开发Oracle应用程序时,经常需要使用到存储过程和函数。这两种类型的数据库对象各有优势,可以满足不同的业务需求。有时候,为了更好地组织代码和提高复用性,...

    oracle笔记存储函数和存储过程

    oracle笔记存储函数和存储过程,有具体的代码案例!存储函数和存储过程的知识笔记!

    ibatis调用oracle的函数,存储过程的方法

    在Ibatis中调用Oracle函数和存储过程,你需要以下步骤: 1. **配置映射文件(Mapper XML)**: - 创建一个XML映射文件,定义SQL语句。对于函数,使用`&lt;select&gt;`标签;对于存储过程,使用`&lt;procedure&gt;`标签。 - 在...

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

    本资源包“oracle函数大全与存储过程语法-中文.rar”涵盖了从Oracle 9i到10G版本的函数和存储过程的详细信息,旨在帮助用户深入理解和应用这些关键概念。 1. **Oracle函数大全**: - 函数是预定义的代码块,接受一...

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

    调用Oracle函数的过程与调用存储过程类似,但创建CallableStatement时的SQL语句略有不同。由于函数会返回一个值,所以格式通常是`{? = call function_name(?, ?, ...)}`。在执行后,通过`CallableStatement....

    Oracle存储过程和函数(最详细包含emp 表实例操作,边看边操作)

    **二、Oracle函数** 函数与存储过程相似,但函数必须返回一个值,而存储过程可以不返回。函数可以被用作查询的一部分,提升SQL语句的灵活性。 1. **创建函数**:使用`CREATE FUNCTION`语句定义函数,例如: ```...

    oracle笔记(存储过程函数触发器游标流程控制等)

    这份"oracle笔记(存储过程函数触发器游标流程控制等)"涵盖了Oracle数据库管理中的关键知识点,包括但不限于以下几个方面: 1. **存储过程与函数**:存储过程是预编译的SQL语句集合,用于执行特定任务。它们可以提高...

    Oracle中的函数、存储过程、包

    - **使用函数**:函数可以在查询语句中直接调用,例如在SELECT语句中,或者在其他函数和过程内部作为参数传递。 - **编写函数**:使用`CREATE OR REPLACE FUNCTION`语法定义函数,包括输入参数、返回类型、变量...

    oracle 函数大全 参考函数 手册 速查 chm格式

    Oracle函数是数据库操作中的核心组成部分,它们允许开发人员和DBA执行各种计算、转换、查询和数据处理任务。手册中可能涵盖了以下几类函数: 1. 数学函数:如ABS(取绝对值)、MOD(取模)、ROUND(四舍五入)等,...

Global site tag (gtag.js) - Google Analytics