在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'
参考
- http://www.oradev.com/ref_cursor.jsp
- http://psoug.org/reference/procedures.html
- http://www.devshed.com/c/a/Oracle/Working-with-REF-CURSOR-in-PL-SQL/
- http://www.codeproject.com/KB/database/Oracle_RefCursor_ADO_C__.aspx
翻译自: https://mkyong.com/oracle/oracle-stored-procedures-hello-world-examples/
本文提供了一系列Oracle存储过程的示例,包括基础的'Hello World',带IN参数,OUT参数,INOUT参数以及使用光标的存储过程。每个示例都详细解释了如何使用DBMS_OUTPUT和不同类型的参数进行交互。

208

被折叠的 条评论
为什么被折叠?



