Oracle存储过程Hello World示例

本文提供了一系列Oracle存储过程的示例,包括基础的'Hello World',带IN参数,OUT参数,INOUT参数以及使用光标的存储过程。每个示例都详细解释了如何使用DBMS_OUTPUT和不同类型的参数进行交互。

在Oracle数据库中创建存储过程(IN,OUT,IN OUT和Cursor参数)的快速示例列表。 PL / SQL代码是不言自明的。

1. Hello World

通过DBMS_OUTPUT打印出“ Hello World”的存储过程。

CREATE OR REPLACE PROCEDURE procPrintHelloWorld
IS
BEGIN
  
  DBMS_OUTPUT.PUT_LINE('Hello World!');

END;
/

运行

exec procPrintHelloWorld;

输出量

Hello World!

2. Hello World + IN参数

存储过程可以接受单个参数,并通过DBMS_OUTPUT输出“ Hello World IN参数” +参数值。

CREATE OR REPLACE PROCEDURE procOneINParameter(param1 IN VARCHAR2)
IS
BEGIN
  
  DBMS_OUTPUT.PUT_LINE('Hello World IN parameter ' || param1);

END;
/

运行

exec procOneINParameter('mkyong');

输出量

Hello World IN parameter mkyong

3. Hello World + OUT参数

用于将“ Hello World OUT参数”值输出/分配给OUT参数的存储过程。

CREATE OR REPLACE PROCEDURE procOneOUTParameter(outParam1 OUT VARCHAR2)
IS
BEGIN
  
  outParam1 := 'Hello World OUT parameter';

END;
/

运行

DECLARE
  outParam1 VARCHAR2(100);
BEGIN
  procOneOUTParameter(outParam1);
  DBMS_OUTPUT.PUT_LINE(outParam1);
END;
/

输出量

Hello World OUT parameter

4. Hello World + INOUT参数

存储过程接受INOUT参数(genericParam),构造输出消息并再次分配回相同的参数名称(genericParam)。

CREATE OR REPLACE PROCEDURE procOneINOUTParameter(genericParam IN OUT VARCHAR2)
IS
BEGIN
  
  genericParam := 'Hello World INOUT parameter ' || genericParam;

END;
/

运行

DECLARE
  genericParam VARCHAR2(100) := 'mkyong';
BEGIN
  procOneINOUTParameter(genericParam);
  DBMS_OUTPUT.PUT_LINE(genericParam);
END;
/

输出量

Hello World INOUT parameter mkyong

5. Hello World +光标

存储过程,返回ref游标并接受IN参数。

CREATE OR REPLACE PROCEDURE procCursorExample(
cursorParam OUT SYS_REFCURSOR, userNameParam IN VARCHAR2)
IS
BEGIN

  OPEN cursorParam FOR
  SELECT * FROM DBUSER WHERE USERNAME = userNameParam;

END;
/

运行

DECLARE 
  dbUserCursor SYS_REFCURSOR;
  dbUserTable DBUSER%ROWTYPE;
BEGIN
  
  procCursorExample(dbUserCursor,'mkyong');
  
  LOOP
    
	FETCH dbUserCursor INTO dbUserTable;
	
    EXIT WHEN dbUserCursor%NOTFOUND;
    dbms_output.put_line(dbUserTable.user_id);
  
  END LOOP;

  CLOSE dbUserCursor;
  
END;
/

输出量

List of the user_id which matched username='mkyong'

参考

  1. http://www.oradev.com/ref_cursor.jsp
  2. http://psoug.org/reference/procedures.html
  3. http://www.devshed.com/c/a/Oracle/Working-with-REF-CURSOR-in-PL-SQL/
  4. http://www.codeproject.com/KB/database/Oracle_RefCursor_ADO_C__.aspx

翻译自: https://mkyong.com/oracle/oracle-stored-procedures-hello-world-examples/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值