`
kely39
  • 浏览: 47919 次
  • 性别: 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
分享到:
评论

相关推荐

    2023年美赛特等奖论文-F-2305794-解密.pdf

    大学生,数学建模,美国大学生数学建模竞赛,MCM/ICM,2023年美赛特等奖O奖论文

    亚太经社会:2024年亚太贸易便利化报告.pdf

    亚太经社会:2024年亚太贸易便利化报告.pdf

    消费者价格指数下的年通货膨胀率(1960-2021年).xls

    消费者价格指数(CPI):按消费者价格指数衡量的通货膨胀反映出普通消费者在指定时间间隔(如年度)内购买固定或变动的一篮子货物和服务的成本的年百分比变化。通常采用拉斯佩尔公式进行计算。

    node-v8.10.0-linux-x86.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    网页制作基础学习--HTML+CSS常用代码.txt

    网页制作基础学习--HTML+CSS常用代码

    IEC TS 60364-8-3-2020 低压电气装置.第8-3部分:功能方面.生产用户电气装置的操作.pdf

    IEC TS 60364-8-3-2020 低压电气装置.第8-3部分:功能方面.生产用户电气装置的操作.pdf

    智能制造数字化供应链全栈解决方案.pptx

    智能制造数字化供应链全栈解决方案.pptx

    yolov5训练自己的数据集.docx

    yolov5训练自己的数据集

    Windows 10系统上安装和配置Tomcat的步骤

    附件是Windows 10系统上安装和配置Tomcat的步骤,文件绿色安全,请大家放心下载,仅供交流学习使用,无任何商业目的!

    2018美赛O奖论文C题合集.pdf

    大学生,数学建模,美国大学生数学建模竞赛,MCM/ICM,历年美赛特等奖O奖论文

    超级实用简洁的反色软件,支持部分区域反色!!

    超级实用简洁的反色软件,支持部分区域反色!! 界面简洁,易于使用! 源码可以联系

    2024年中国NAD+抗衰补剂行业研究报告.docx

    2024年中国NAD+抗衰补剂行业研究报告

    高德地图API+Python解决租房问题内含源码和设计文档.md

    高德地图API+Python解决租房问题内含源码和设计文档.md

    QYResearch:2023年前10大壁纸刀企业占据全球39%的市场份额.docx

    QYResearch:2023年前10大壁纸刀企业占据全球39%的市场份额.docx

    广东工业大学-数据库简答题考试试题回忆版以及答案解析.doc

    此试题是考试后回忆版本,你会发现是惊喜。恭喜你考个好成绩。

    node-v9.11.0-linux-s390x.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    MVIMG_20240506_214323.jpg

    MVIMG_20240506_214323.jpg

    2023年美赛特等奖论文-B-2318300-解密.pdf

    大学生,数学建模,美国大学生数学建模竞赛,MCM/ICM,2023年美赛特等奖O奖论文

    数据库课程设计的概要介绍与分析

    数据库是计算机科学中的一个核心领域,它用于存储、管理和检索数据。随着信息技术的发展,数据库技术已经渗透到我们日常生活的方方面面,从简单的网站用户信息管理到复杂的企业级数据仓库系统,无一不彰显其重要性。以下是一个关于数据库的综合资源描述,旨在为初学者和专业人士提供一个全面的视角。 ### 1. 数据库基础 数据库的基础知识包括了解数据模型、数据库管理系统(DBMS)以及SQL语言等。数据模型主要有关系型模型(如MySQL、Oracle)、非关系型模型(NoSQL,如MongoDB、Cassandra)等。关系型数据库遵循ACID特性(原子性、一致性、隔离性、持久性),适用于需要高度一致性的场景;而非关系型数据库则以灵活的schema设计和高可扩展性见长,适用于大数据处理和实时Web应用。 ### 2. 学习资源 - **在线课程**:Coursera、edX、Udacity等平台提供了多门数据库相关的课程,涵盖从入门到高级的各种主题,比如Stanford大学的《数据库系统概念》课程。 - **书籍**:《数据库系统概论》(Silberschatz, Korth, Sudarsha

    《统计与数据分析基础》03数据处理.pptx

    《统计与数据分析基础》03数据处理

Global site tag (gtag.js) - Google Analytics