본문 바로가기
반응형

 

  Oracle에서 익명 프로시저(Anonymous PL/SQL Block)는 저장 프로시저(Stored Procedure)와 달리 데이터베이스에 저장되지 않고 일회성으로 실행되는 PL/SQL 코드 블록입니다. 이러한 익명 프로시저는 주로 SQL 스크립트 또는 특정 작업을 수행하기 위해 데이터베이스 세션 내에서 사용됩니다. 익명 프로시저를 사용하여 데이터 검색, 조작 및 처리와 같은 다양한 작업을 수행할 수 있습니다.

익명 프로시저의 일반적인 구조는 다음과 같습니다:

 CALL
    BEGIN
       EXECUTE IMMEDIATE 'DROP SEQUENCE SEQ_OUT';
       EXECUTE IMMEDIATE 'CREATE SEQUENCE  SEQ_OUT MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER NOCYCLE';
       EXECUTE IMMEDIATE 'GRANT SELECT, ALTER ON SEQ_OUT TO MALL_APP'; --권한
    END
;

 

  익명 프로시저는 BEGIN과 END 사이에 PL/SQL 코드를 작성하여 데이터베이스 작업을 정의합니다. 이 코드 블록은 단일 트랜잭션 내에서 실행되며, 데이터베이스에 대한 작업을 수행할 수 있습니다. 익명 프로시저를 사용하면 다음과 같은 작업을 수행할 수 있습니다:

 

  1. 데이터 검색 및 선택:
    SELECT 문을 사용하여 데이터를 검색하고 결과를 변수에 저장하거나 출력할 수 있습니다.

  2. 데이터 조작 및 업데이트:
    INSERT, UPDATE, DELETE 등의 SQL 문을 사용하여 데이터를 조작하고 업데이트할 수 있습니다.

  3. 제어 구문 사용:
    IF, FOR, WHILE과 같은 제어 구문을 사용하여 흐름 제어와 반복 작업을 수행할 수 있습니다.

  4. 예외 처리:
    예외가 발생할 경우 이를 처리하고 오류 메시지를 생성하거나 처리할 수 있습니다.
    예를 들어, 아래는 익명 프로시저가 데이터베이스에서 사용자를 검색하고 결과를 출력하는 간단한 예제입니다:

 

BEGIN
    DECLARE
        v_username VARCHAR2(50);
    BEGIN
        SELECT username INTO v_username
        FROM users
        WHERE user_id = 1;
        
        DBMS_OUTPUT.PUT_LINE('Username: ' || v_username);
    EXCEPTION
        WHEN NO_DATA_FOUND THEN
            DBMS_OUTPUT.PUT_LINE('User not found.');
    END;
END;

위의 코드는 BEGIN과 END 사이에서 사용자를 검색하고 결과를 출력합니다. 또한 DECLARE 블록 내에서 변수를 정의하고 예외 처리를 수행합니다.

익명 프로시저는 주로 SQL*Plus 또는 SQL 개발 도구를 사용하여 실행됩니다. 코드 블록을 실행하려면 PL/SQL 블록을 붙여넣거나 스크립트로 실행할 수 있습니다. 이것은 임시 작업이나 데이터베이스 작업을 수행하는 데 매우 유용한 도구입니다.

반응형

'Database > Oracle' 카테고리의 다른 글

[Oracle] Merge into 2가지 방법  (0) 2023.09.29