`
sangei
  • 浏览: 337317 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

【实验】【PROCEDURE】一个最简单的oracle存储过程"proc_helloworld"

阅读更多

本文通过一个最简单的oracle存储过程"proc_helloworld"的实验,展现一下存储过程的开发和维护过程,适合超超超级初学小牛(like me)。

1.编写。编写一个最最简单的存储过程,给它起个名字叫做proc_helloworld
CREATE OR REPLACE PROCEDURE proc_helloworld
IS
BEGIN
   DBMS_OUTPUT.put_line ('Hello World!');
END;
/

2.创建。在sqlplus命令行界面创建该存储过程
sys@ora10g> conn sec/sec
Connected.
sec@ora10g> CREATE OR REPLACE PROCEDURE proc_helloworld
  2  IS
  3  BEGIN
  4     DBMS_OUTPUT.put_line ('Hello World!');
  5  END;
  6  /

Procedure created.

3.运行。两种方法运行存储过程
1).需要在屏幕上显示出"DBMS_OUTPUT.put_line"的输出字符串,需要做一个小小的设置
sec@ora10g> show serveroutput
serveroutput OFF
sec@ora10g>set serveroutput on
sec@ora10g> show serveroutput
serveroutput ON SIZE 10000 FORMAT WORD_WRAPPED

2).在sqlplus命令行界面使用"EXECUTE"命令(简写做"EXEC")执行
sec@ora10g>exec proc_helloworld
Hello World!

PL/SQL procedure successfully completed.

3).在一个无名PL/SQL块内运行存储过程
BEGIN
   proc_helloworld;
END;
/

sec@ora10g> BEGIN
  2     proc_helloworld;
  3  END;
  4  /
Hello World!

PL/SQL procedure successfully completed.

4.修改。修改一个存储过程只需要将修改好的存储过程在sqlplus界面先重新执行一下即可,因为在创建过程中使用的是"CREATE OR REPLACE PROCEDURE",也就是说如果没有就创建,如果已经存在了这个存储过程,就替换它
CREATE OR REPLACE PROCEDURE proc_helloworld
IS
BEGIN
   DBMS_OUTPUT.put_line ('Hello World! '||chr(10)||'I am a Happy DBA Secooler!');
END;
/
或者
CREATE OR REPLACE PROCEDURE proc_helloworld
IS
BEGIN
   DBMS_OUTPUT.put_line ('Hello World!
I am a Happy DBA Secooler!');
END;
/

sec@ora10g> CREATE OR REPLACE PROCEDURE proc_helloworld
  2  IS
  3  BEGIN
  4     DBMS_OUTPUT.put_line ('Hello World! '||chr(10)||'I am a Happy DBA Secooler!');
  5  END;
  6  /

Procedure created.

看一下执行效果:
sec@ora10g> exec proc_helloworld;
Hello World!
I am a Happy DBA Secooler!

PL/SQL procedure successfully completed.

5.调试。对于非常复杂的存储过程的调试是真正体现个人魅力和能力的地方,往往需要很多的经验,这个急不得,只能慢慢来 Take it easy.
在sqlplus下调试存储过程时,如果出现错误,时刻使用"show errors"命令查看哪里出错了,例如:
sec@ora10g> CREATE OR REPLACE PROCEDURE proc_helloworld
  2  IS
  3  BEGIN
  4     DBMS_OUTPUT.put_line ('Hello World!');
  5 END
  6  /

Warning: Procedure created with compilation errors.

sec@ora10g> show errors
Errors for PROCEDURE PROC_HELLOWORLD:

LINE/COL ERROR
-------- -----------------------------------------------------------------
5/3      PLS-00103: Encountered the symbol "end-of-file" when expecting
         one of the following:
         ; <an identifier> <a double-quoted delimited-identifier>
         delete exists prior <a single-quoted SQL string>
         The symbol ";" was substituted for "end-of-file" to continue.

通过提示,问题出现在END后面没有分号结束符号,修改后问题得到处理
sec@ora10g> CREATE OR REPLACE PROCEDURE proc_helloworld
  2  IS
  3  BEGIN
  4     DBMS_OUTPUT.put_line ('Hello World!');
  5  END;
  6  /

Procedure created.

6.删除。使用drop语句删除存储过程
sec@ora10g> select object_name,object_type,status from user_objects where OBJECT_TYPE='PROCEDURE';

OBJECT_NAME                    OBJECT_TYPE         STATUS
------------------------------ ------------------- -------
PROC_HELLOWORLD                PROCEDURE           VALID

sec@ora10g>DROP PROCEDURE proc_helloworld;

Procedure dropped.

sec@ora10g> select object_name,object_type,status from user_objects where OBJECT_TYPE='PROCEDURE';

no rows selected

7.获取。在维护存储过程的过程中往往需要快速的获取存储过程的SQL创建语句,我经常使用的有如下两种方法
1).使用DBMS_METADATA包获得
sec@ora10g>SELECT DBMS_METADATA.get_ddl ('PROCEDURE', 'PROC_HELLOWORLD') from dual;

DBMS_METADATA.GET_DDL('PROCEDURE','PROC_HELLOWORLD')
--------------------------------------------------------------------------------

  CREATE OR REPLACE PROCEDURE "SEC"."PROC_HELLOWORLD"
IS
BEGIN
   DBMS_OUTPUT.put_line ('Hello World!');
END;

2).使用"USER_SOURCE"视图获得,本人推荐使用这种方法查看,格式标准,内容也全面
sec@ora10g>SELECT text FROM user_source WHERE NAME = 'PROC_HELLOWORLD';

TEXT
------------------------------------------------------------------------------------------------------------------------------
PROCEDURE proc_helloworld
IS
BEGIN
   DBMS_OUTPUT.put_line ('Hello World!');
END;

8.小结
上面的实验,我通过编写、创建、运行、修改、调试、删除和获取七个内容描述了一个存储过程的开发和维护过程。
试验,实验还有实践,技术工作者永远不变的途径!
Goodluck Friends!

-- The End --

分享到:
评论

相关推荐

    Oracle 11g ProC_C++编程艺术 源代码

    Oracle 11g ProC/C++编程艺术是关于在Oracle数据库环境下使用Pro*C/C++进行应用开发的专业书籍。源代码提供了书中的实例和示例,帮助读者深入理解并实践相关技术。以下是关于Oracle 11g ProC/C++编程的一些核心知识...

    Oracle 11g ProC_C++编程.rar

    ProC是Oracle提供的一个预处理器,它将C或C++代码转换为PL/SQL块,然后这些块可以被Oracle数据库执行。这使得开发人员能够利用C/C++的灵活性和效率,同时利用Oracle数据库的事务管理和数据管理能力。 在Oracle 11g...

    hello_proc.tar.gz_device_create_file_proc_hello

    本主题将深入探讨如何利用proc文件系统创建一个设备文件,具体案例为"hello_proc.tar.gz_device_create_file_proc_hello"。 首先,`/proc`文件系统是一个虚拟文件系统,它并不存储在磁盘上,而是由内核动态生成的,...

    数据库原理与应用实验报告

    - 示例中的"PROC_系部读者借阅信息"是一个无参存储过程,用于查询计算机系读者在2014-1-1之后借阅的图书信息。存储过程的定义如下: ```sql CREATE PROC PROC_系部读者借阅信息 AS BEGIN SELECT rname, bno, ...

    ProC-Sample.rar_oracle_oracle proc sample_proc

    标题中的"ProC-Sample.rar_oracle_oracle proc sample_proc"揭示了这是一个关于Oracle数据库的ProC编程示例。ProC是Oracle提供的一种预编译器,它允许开发者在PL/SQL中嵌入C代码,以提高性能和处理复杂计算。这个...

    TX_CON_0088_oracle_oracle存储过程实战_

    在Oracle中,创建一个存储过程使用`CREATE PROCEDURE`语句。以下是一个简单的示例: ```sql CREATE OR REPLACE PROCEDURE my_proc ( param1 IN NUMBER, param2 OUT NUMBER ) AS BEGIN -- SQL 或 PL/SQL 代码块 ...

    masm.rar_Assembly hello wor_dos hello world_hello world D_masm_

    标题中的"masm.rar_Assembly hello wor_dos hello world_hello world D_masm_"揭示了我们今天要讨论的主题——使用MASM(Microsoft Assembler)在DOS环境下编写并编译一个简单的“Hello, World!”程序。这个压缩包...

    Oracle_ProC.rar_linux oracle_linux proc *c_linux proc oracle_ora

    Oracle ProC是Oracle数据库提供的一种集成的C编程接口,它允许开发者使用C语言来编写存储过程、函数、触发器等数据库对象。在Linux环境下,利用ProC开发Oracle应用,可以充分利用C语言的效率和灵活性,同时享受...

    msmmPrj.rar_VC++ ORACLE_oracle_vc oracle_vc oracle 10g proc*c

    描述中提到"oracle下利用proc在vc++开发的一个小例子,可以用来扩展其他的应用",这表明该压缩包包含的源码是一个使用Pro*C库的VC++应用程序,它演示了如何在C++环境中调用Oracle存储过程或函数,以执行数据库操作。...

    asm_helloworld_world_

    标题“asm_helloworld_world_”暗示我们关注的焦点是一个用汇编语言编写的“Hello, World!”程序。在计算机科学的教育中,"Hello, World!"通常被用作初次接触新编程语言时编写的第一个程序,它能快速验证编译器和...

    oracle存储过程-帮助文档

    `oracle procedure.chm`是一个帮助文件,通常包含详细的参考信息、示例和教程,供用户学习和查询Oracle存储过程的用法。CHM(Compiled HTML Help)格式是一种微软提供的离线帮助文档格式,用户可以通过搜索和导航来...

    ORACLE PROC_*C编程点滴.pdf

    《ORACLE PROC_*C编程点滴》这篇文档主要探讨了在Oracle数据库环境下使用PROC_*C进行编程的一些关键点,特别是在预编译时指定数据库用户和处理游标操作的细节。以下是这些知识点的详细说明: 1. **预编译时指定...

    Oracle编程Oci_ProC_odbc简易入门

    学习Oracle编程Oci_ProC_odbc,不仅需要理解Oci接口的基本概念和函数调用,还要掌握Pro*C的语法和预编译过程,同时理解ODBC的工作原理和配置。这些知识对于开发高效、灵活的Oracle数据库应用至关重要。通过实践和...

    ORACLE存储过程最全教程

    Oracle存储过程是数据库管理系统Oracle中的一个关键特性,它允许开发者编写一组预编译的SQL和PL/SQL语句,以实现特定的业务逻辑或数据库操作。这篇教程将深入讲解Oracle存储过程的各个方面,帮助你从基础到高级全面...

    MySQL数据库:存储过程的创建1.pptx

    数据数据库编程 创建存储过程1 课程目标 1)了解 ——存储过程的优点; 2)理解 —— 存储过程...当然,当存储过程体中只有一个SQL语句时可以省略BEGIN-END标志。 创建存储过程 proc_parameter的参数如下: [ IN | OUT

    Oracle ProC_C++编程源代码

    Oracle ProC/C++编程是Oracle数据库与C++语言结合的一种技术,它允许开发人员使用C++语言编写存储过程、函数和其他数据库对象。Oracle 11g版本提供了更加强大的ProC/C++支持,使得开发者可以利用C++的高效性和灵活性...

    oracle数据库 存储过程

    在Oracle数据库中,存储过程是一种重要的数据库对象,它允许开发者将一组SQL语句和控制流程语句封装在一起,形成可重复使用的代码块。存储过程不仅提高了代码的重用性,还增强了数据处理的安全性和效率。下面,我们...

    调用oracle存储过程详解PPT学习教案.pptx

    Oracle存储过程是数据库管理系统Oracle中的一个重要特性,它允许开发者创建包含SQL语句和程序逻辑的自定义函数。本文将深入探讨Oracle存储过程的概念、结构、编写以及如何在不同开发环境中调用。 首先,PL/SQL...

    multi_proc_wrong.c

    multi_proc_wrong.c 下载后直接编译运行

    实验9 存储过程的创建和使用

    通过这个实验,学生将深入理解存储过程的概念,掌握创建、调用和管理存储过程的技巧,增强T-SQL编程能力,同时训练逻辑思维和问题解决能力。实验报告的撰写可以帮助学生反思自己的学习成果,识别尚待提高的领域,为...

Global site tag (gtag.js) - Google Analytics