Примеры хранимых процедур Oracle Hello World
Список быстрых примеров для создания хранимых процедур (IN, OUT, IN OUT и параметр Cursor) в базе данных Oracle. PL/SQL code is self-explanatory.
1. Привет, мир
Хранимая процедура для распечатки «Hello World» через DBMS_OUTPUT.
CREATE OR REPLACE PROCEDURE procPrintHelloWorld IS BEGIN DBMS_OUTPUT.PUT_LINE('Hello World!'); END; /
Запустить его
exec procPrintHelloWorld;
Выход
Hello World!
2. Hello World + параметр IN
Хранимая процедура, принимающая один параметр и распечатывающая параметр «Hello World IN» + значение параметра через DBMS_OUTPUT.
CREATE OR REPLACE PROCEDURE procOneINParameter(param1 IN VARCHAR2) IS BEGIN DBMS_OUTPUT.PUT_LINE('Hello World IN parameter ' || param1); END; /
Запустить его
exec procOneINParameter('example');
Выход
Hello World IN parameter example
3. Hello World + параметр OUT
Хранимая процедура для вывода / присвоения значения «Hello World OUT parameter» параметру 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) := 'example'; BEGIN procOneINOUTParameter(genericParam); DBMS_OUTPUT.PUT_LINE(genericParam); END; /
Выход
Hello World INOUT parameter example
5. Hello World + Курсор
Хранимая процедура, верните указатель ссылки и примите параметр 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,'example'); 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='example'