找回密码
 注册
【阿里云】2核2G云新老同享 99元/年,续费同价华为云精选云产品特惠做网站就用糖果主机Jtti,新加坡服务器,美国服务器,香港服务器
查看: 251|回复: 0

[转贴] 如何开发ORACLE存储过程

[复制链接]
发表于 2011 年 2 月 15 日 19:23:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×

本帖最后由 沭阳雪狼 于 2011-2-15 15:51 编辑
一。 概述
    Oracle存储过程开发的要点是:
    1; 使用Notepad文本编辑器,用Oracle PL/SQL编程语言写一个存储过程;
    2; 在Oracle数据库中创建一个存储过程;
    3; 在Oracle数据库中使用SQL*Plus工具运行存储过程;
    4; 在Oracle数据库中修改存储过程;
    5; 通过编译错误调试存储过程;
    6; 删除存储过程;
    二。环境配置
    包括以下内容:
    1; 一个文本编辑器Notepad;
    2; Oracle SQL*Plus工具,提交Oracle SQL和PL/SQL 语句到Oracle database。
    3; Oracle 10g express数据库,它是免费使用的版本;
    需要的技巧:
    4; SQL基础知识,包括插入、修改、删除等
    5; 使用Oracle's SQL*Plus工具的基本技巧;
    6; 使用Oracle's PL/SQL 编程语言的基本技巧;
    三。写一个存储过程
    存储过程使用Oracle's PL/SQL 程序语言编写,让我们写一个什么工作都不做的存储过程,我们可以编译和运行它而不用担心会对数据库产生任何损害。
    在Notepad, 写下:
    CREATE OR REPLACE PROCEDURE skeleton
    IS
    BEGIN
    NULL;
    END;
    把文件存为skeleton.sql.
    让我们一行行遍历这个存储过程:
    1 CREATE OR REPLACE PROCEDURE skeleton
    2 IS
    3 BEGIN
    4 NULL;
    5 END;
    行1:
    CREATE OR REPLACE PROCEDURE 是一个SQL语句通知Oracle数据库去创建一个叫做skeleton存储过程, 假设存在就覆盖它;
    行2:
    IS关键词表明后面将跟随一个PL/SQL体。
    行3:
    BEGIN关键词表明PL/SQL 体的开始。
    行4:
    NULL PL/SQL语句表明什么事都不做,这句不能删去,由于PL/SQL体中至少需要有一句;
    行5:
    END关键词表明 PL/SQL体的结束
    四。创建一个存储过程
    SQL语句CREATE OR REPLACE PROCEDURE在Oracle数据库中创建、编译和保存一个存储过程。
    从Window打开SQL*Plus并且从SQL*Plus 登录到你的数据库;打开skeleton.sql文件。
    在SQL>命令提示符下输入以下命令:
    SQL>@skeleton
    SQL>/
    SQL*Plus装载skeleton.sql文件的内容到 SQL*Plus缓冲区并且执行SQL*Plus语句;SQL*Plus 会通知你存储过程已经被成功地创建。
    现在你的存储过程被创建,编译和保存在你的Oracle数据库,我们可以运行它。
五。运行一个存储过程
    从SQL*Plus 命令行提示符运行你的存储过程使用EXECUTE命令,如下:
    SQL> EXECUTE skeleton;
    SQL*Plus 输出一下信息确信存储过程成功执行: PL/SQL procedure successfully completed.
    你也可以在一个无名PL/SQL块内运行你的存储过程,在SQL*Plus命令提示符下,它看起来像:
    SQL> BEGIN
    2 SKELETON;
    3 END;
    4 /
    现在我们已经运行了我们的存储过程,我们如何修改它呢?
    六。修改一个存储过程
    让我们写一个输出字符串“Hello World!”的存储过程,用Notepad打开你的skeleton.sql 文件,。 用DBMS_OUTPUT.PUT_LINE 过程调用去替换NULL语句,如下所示:
    CREATE OR REPLACE PROCEDURE skeleton
    IS
    BEGIN
    DBMS_OUTPUT.PUT_LINE('Hello World!');
    END;
    保存到文件skeleton.sql.
    从SQL*Plus命令行, 打开文件skeleton.sql .
    SQL> @skeleton
    SQL>
    1 CREATE OR REPLACE PROCEDURE skeleton
    2 IS
    3 BEGIN
    4 DBMS_OUTPUT.PUT_LINE('Hello World!');
    5* END;
    SQL> /
    SQL*Plus 通知你存储过程成功创建并输出提示信息:Procedure created.
    SQL>
    用EXECUTE 命令运行你的存储过程:
    SQL> EXECUTE skeleton;
    SQL*Plus显示存储过程运行成功:PL/SQL procedure successfully completed.
    我们想要的输出字符串 "Hello World!"没有出来,在显示一个DBMS_OUTPUT.PUT_LINE 结果前需要运行一个SET命令,在SQL*Plus 命令行提示符,键入:
    SQL> SET SERVEROUTPUT ON
    再次执行你的存储过程:
    SQL> EXECUTE skeleton;
    现在结果输出了:Hello World!
    PL/SQL procedure successfully completed.
    七。调试一个存储过程
    当调试一个存储过程时,遵循一样的步骤,修改SQL文件,创建存储过程,执行存储过程,根据编译器反馈的出错信息进行修改,这一步是非常繁琐的,需要依靠经验。
    在实际的商用存储过程的开发调试过程中,因为涉及很多表、类型、光标、循环、条件等复杂的逻辑,和PL/SQL语句的灵活运用,编译时会产生很多错误提示信息,程序员在根据这些错误信息定位,进行修正,再编译最后得到正确的结构;
    八。放弃一个存储过程
    假设在数据库中你不在需要一个存储过程你可以删除它,SQL语句 DROP PROCEDURE 完成从数据库中删除一个存储过程,DROP PROCEDURE 在SQL中被归类为数据定义语言(DDL) 类操作,其他的例子有CREATE, ALTER, RENAME 和TRUNCATE。。
    在SQL*Plus 命令提示符下,使用DROP PROCEDURE SQL 语句删除你的叫做skeleton的存储过程:
    SQL> DROP PROCEDURE skeleton;
    SQL*Plus assures us the procedure has been removed:
    Procedure dropped.

Jgwy.Com - Free Web Hosting Guide & Directory In China since 2001! Jgwy.Net-Jglt.Net
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|金光论坛

GMT+8, 2024 年 11 月 20 日 23:21 , Processed in 0.109065 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表