`
nada_forever
  • 浏览: 24182 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

PL/SQL存储过程备忘

阅读更多

 

嗯,好久不写存储过程了,最近有一个业务用数据库的存储过程来实现比较妥当,于是再次接触了一下,下面是一些记录,以便以后翻查;

1、如何定义一个存储过程:

下面是一个简单的存储过程定义,实现了将“hello”打印出来

CREATE OR REPLACE PROCEDURE P_TEST(P_START_TIME TEST.CREATE_TIME%TYPE, P_END_TIME TEST.CREATE_TIME%TYPE) IS

//这里定义所有在正文中会使用到的局部变量

BEGIN

//这里是存储过程正文

    DBMS_OUTPUT.PUT_LINE('HELLO');

 

END P_TEST;

 

说明:P_START_TIME TEST.CREATE_TIME%TYPE 代表该形参类型与TEST表的CREATE_TIME字段一致;

 

2、如何在sql窗口调用一个名为P_TEST的存储过程?

格式如下:

DECLARE

BEGIN

P_TEST(SYSDATE,SYSDATE);

END;

 

3、如何使用循环?

 

LOOP

//这里是循环中的内容

END LOOP;

 

4、如何在循环中continue?

 

LOOP

if 条件满足 then

goto main_loop;

end if;

 

<<main_loop>>

 null;

END LOOP;

 

 

5、如何使用游标?

一般使用游标分这样几个步骤:定义游标、打开游标、获取当前游标数据并让游标指向下一条数据、关闭游标;

定义游标示例:

CURSOR myCur is

        select a, b, c

          from tbl_test;

 

打开游标示例:

    if myCur%isopen = false then

        open myCur;

    end if;

 

获取当前数据并让游标指向下一跳数据:

    loop

        fetch myCur into tmp_a,tmp_b,tmp_c;

        exit when myCur%notfound;

        dbms_output.put_line(tmp_a || ',' || tmp_b || ',' ||

                             tmp_c);

    end loop;

 

关闭游标示例:

close myCur;

 

一个完整的例子:

CREATE OR REPLACE PROCEDURE P_TEST IS

    CURSOR myCur is

        select a, b, c from tbl_test;

 

    tmp_a varchar(32);

    tmp_b varchar(32);

    tmp_c varchar(32);

BEGIN

    if myCur%isopen = false then

        open myCur;

    end if;

 

    loop

        fetch myCur

            into tmp_a, tmp_b, tmp_c;

        exit when myCur%notfound;

        dbms_output.put_line(tmp_a || ',' || tmp_b || ',' || tmp_c);

    end loop;

 

    close myCur;

 

END P_TEST;

 

 

6、使用结构体与游标结合进行使用

在上面的应用中,我们可以把a,b,c三个值放到一个结构体中,以方便使用;

结构体定义示例:

    type SourceData is record(

        a tbl_test.a%type,

        b tbl_test.b%type,

        c tbl_test.c%type);

 

对循环的使用,我们也可以通过使用for-in语句,下面的完整示例:

CREATE OR REPLACE PROCEDURE P_TEST IS

    CURSOR myCur is

        select a, b, c from tbl_test;

 

    type SourceData is record(

        a tbl_test.a%type,

        b tbl_test.b%type,

        c tbl_test.c%type);

 

    srcData SourceData;

BEGIN

    for srcData in myCur loop

        dbms_output.put_line(srcData.a || ',' || srcData.b || ',' ||

                             srcData.c);

    end loop;

 

END P_TEST;

 

7、如何获取当前插入数据的id

insert into tbl_test(id,name) values(seq_test.nextval,'myName');

select seq_test.currval into tmpId from dual;

 

8、在存储过程处理过程中,遇到异常一般如何处理?

下面是一个存储过程正文中的常用格式:

CREATE OR REPLACE PROCEDURE P_TEST(P_START_TIME TEST.CREATE_TIME%TYPE, P_END_TIME TEST.CREATE_TIME%TYPE) IS

BEGIN

//这里做一些数据库操作

      COMMIT;

EXCEPTION

//遇到异常,则回滚

    WHEN OTHERS THEN

   

        ROLLBACK;

        RAISE;

 

END P_TEST;

 

 

9、常用函数

打印:

DBMS_OUTPUT.PUT_LINE('hello' || ' ' || 'world');

字符串转日期:

to_date('2011-01-10 12:13:14','YYYY-MM-DD HH24:MI:SS')

日期转字符串:

to_char(sysdate,'YYYY-MM-DD HH24:MI:SS')

去掉前后空格:

trim(' str ');

 

1
1
分享到:
评论

相关推荐

    sql pl/sql存储过程

    SQL and Pl/SQL培训文档 第一天 第一章 PL/SQL 简介 安装scott/tigger用户模式 Example1 标准的PL/SQL块结构 PL/SQL块类型 Example2:子程序,函数,程序包 PL/SQL代码的执行 第二章 PL/SQL数据类型 预定义数据类型 ...

    pl/sql例题代码pl/sql例题代码pl/sql例题代码

    pl/sql例题代码pl/sql例题代码pl/sql例题代码

    PL/SQL存储过程笔记

    PL/SQL存储过程笔记PL/SQL存储过程笔记PL/SQL存储过程笔记PL/SQL存储过程笔记PL/SQL存储过程笔记PL/SQL存储过程笔记PL/SQL存储过程笔记

    oracle pl/sql 存储过程和函数与触发器

    oracle pl/sql 存储过程和函数与触发器

    pl/sql developer11.0

    pl/sql developer11.0下载 pl/sql developer11.0下载 pl/sql developer11.0下载

    PL/SQL 存储过程

    数据库概论第八章实验六,使用T-SQL编写存储过程并访问数据库 代码+截图

    Oracle PL/SQL程序设计(第5版)(套装上下册)

    《Oracle PL/SQL程序设计(第5版)(套装上下册)》基于Oracle数据库11g,从PL/SQL编程、PL/SQL程序结构、PL/SQL程序数据、PL/SQL中的SQL、PL/SQL应用构建、高级PL/SQL主题这6个方面详细系统地讨论了PL/SQL以及如何...

    PL/SQL Developer9.06

    PL/SQL Developer是一个集成开发环境,专门面向Oracle数据库存储程序单元的开发。如今,有越来越多的商业逻辑和应用逻辑转向了Oracle Server,因此,PL/SQL编程也成了整个开发过程的一个重要组成部分。PL/SQL ...

    PL/SQL User's Guide and Reference (官方CHM)

    PL/SQL, Oracle's procedural extension of SQL, is an advanced fourth-generation programming language (4GL). It offers modern features such as data encapsulation, overloading, collection types, ...

    Oracle PL/SQL语言初级教程

    PL/SQL是Oracle对标准数据库语言的扩展,Oracle公司已经将PL/SQL整合到Oracle 服务器和其他工具中了,近几年中更多的开发人员和DBA开始使用PL/SQL,本教程将以循速渐进的方式讲述PL/SQL基础语法,结构和组件、以及...

    oracle PL/SQL测试题目和详细答案

    pl/sql存储过程,函数,游标,以及存储过程中的基础知识,绝对值得你收藏的经典题目,让你的pl/sql得到最大的锻炼。让你的数据库逻辑更加灵活。

    PL/SQL 的函数与存储过程练习

    PL/SQL 的函数与存储过程练习 PL/SQL 的函数与存储过程练习

    PL/SQL Developer V7.1.4

    PL/SQL Developer是一种集成的开发环境,专门用于开发、测试、调试和优化Oracle PL/SQL存储程序单元,比如触发器等。PL/SQL Developer功能十分全面,大大缩短了程序员的开发周期。强大的PL/SQL编辑器,完善的Debugger...

    PL/SQL developer 12.07 注册码 可以使用

    PL/SQL developer 12.07 注册码 可以使用,不错,自己用过了,分享给大家

    PL/SQL免安装版

    PL/SQL也是一种程序语言,叫做过程化SQL语言(Procedural Language/SQL)。PL/SQL是Oracle数据库对SQL语句的扩展。在普通SQL语句的使用上增加了编程语言的特点,所以PL/SQL把数据操作和查询语句组织在PL/SQL代码的...

    pl/sql develpment 8 下载

    pl/sql 下载pl/sql 下载pl/sql 下载pl/sql 下载pl/sql 下载pl/sql 下载pl/sql 下载pl/sql 下载pl/sql 下载pl/sql 下载pl/sql 下载pl/sql 下载pl/sql 下载pl/sql 下载pl/sql 下载pl/sql 下载pl/sql 下载pl/sql 下载pl...

    PL/SQL Developer 客户端

    PL/SQL也是一种程序语言,叫做过程化SQL语言(Procedural Language/SQL)。PL/SQL是Oracle数据库对SQL语句的扩展。在普通SQL语句的使用上增加了编程语言的特点,所以PL/SQL把数据操作和查询语句组织在PL/SQL代码的...

    pl/sql最新中文手册

    最新pl/sql7.0中文手册

    PL/SQL 程序设计

    PL/SQL 程序设计 本章主要重点:  PL/SQL概述  PL/SQL块结构  PL/SQL流程  运算符和表达式  游标  异常处理  数据库存储过程和函数  包  触发器

    PL/SQL存储过程编程

    Oracle应用编辑方法概览 答:1) Pro*C/C++/... : C语言和数据库打交道的方法,比OCI更常用; 希望对你们能有所帮助。

Global site tag (gtag.js) - Google Analytics