PL/SQL 기초
SQL
PL/SQL
한 번에 하나의 작업을 실행합니다.
한 번에 여러 작업을 실행합니다.
선언적 언어
절차적 언어
데이터 지향 언어
애플리케이션 지향 언어
변수 없음
변수
데이터베이스 서버와 상호 작용
데이터베이스 서버와 상호 작용하지 않습니다.
for
루프 또는 if
문 없음for
루프, while
루프 및 if
문위의 표에서 볼 수 있듯이 PL/SQL은 일반적인 고급 프로그래밍 언어의 많은 기능을 채웁니다. 이제 몇 가지 예를 살펴보기 위해 익명 블록부터 시작하겠습니다. 익명 블록은 다음과 같이 4개의 키워드로 구분된 세 부분으로 구성됩니다.
DECLARE
선언 섹션BEGIN
실행 섹션EXCEPTION
예외 섹션END;
선언 섹션은 변수/상수 선언을 위한 것입니다. PL/SQL의 할당 연산자인
:=
사용에 유의하십시오. 실행 섹션은 동작이 코딩되는 곳이고 예외 섹션은 오류가 처리되는 곳입니다. 선언 및 예외 섹션은 선택 사항이지만 실행 섹션은 필수입니다(레이블도 선택 사항임).<<label>>
DECLARE
number1 NUMBER(2);
number2 number1%TYPE := 17; -- value default
text1 VARCHAR2(12) := 'Hello world';
text2 DATE := SYSDATE; -- current date and time
BEGIN
SELECT street_number
INTO number1
FROM address
WHERE name = 'INU';
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('Error Code is ' || TO_CHAR(sqlcode));
DBMS_OUTPUT.PUT_LINE('Error Message is ' || sqlerrm);
END;
함수는 입력 및 반환 유형, 선언("비즈니스"및 예외 블록을 포함하는 맨 위에 선언이 포함됨)과 유사하게 형식이 지정됩니다.
CREATE OR REPLACE FUNCTION <function_name> [(input/output variable declarations)] RETURN return_type
[AUTHID <CURRENT_USER | DEFINER>] <IS|AS> -- heading part
amount number; -- declaration block
BEGIN -- executable part
<PL/SQL block with return statement>
RETURN <return_value>;
[Exception
none]
RETURN <return_value>;
END;
파이프라인 함수는 컬렉션을 반환하지만 전체 컬렉션이 완료될 때까지 기다리지 않고 반환 데이터 세트에 생성된 각 행이 생성될 때 반환되도록 성능이 최적화되었습니다. 각 개별 행의 구조를 설명하는 키워드
PIPELINED
와 호출PIPE ROW
에 주목하세요.CREATE OR REPLACE FUNCTION <function_name> [(input/output variable declarations)] RETURN return_type
[AUTHID <CURRENT_USER | DEFINER>] [<AGGREGATE | PIPELINED>] <IS|USING>
[declaration block]
BEGIN
<PL/SQL block with return statement>
PIPE ROW(<return type>);
RETURN;
[Exception
exception block]
PIPE ROW <return type>;
RETURN;
END;
프로시저는 함수와 비슷하지만 두 가지 주요 방법이 있습니다. 함수는 단일 값/컬렉션만 반환해야 하는 반면 프로시저는 여러 개를 반환할 수 있으며 프로시저는 SQL 문에서 사용할 수 없지만 함수는 실제로 그렇게 할 수 있습니다.
CREATE PROCEDURE create_email_address ( -- Procedure heading
name1 VARCHAR2,
name2 VARCHAR2,
company VARCHAR2,
email OUT VARCHAR2
) -- Procedure
AS
-- Declarative (optional)
error_message VARCHAR2(30) := 'Email address is too long.';
BEGIN -- Executable (required)
email := name1 || '.' || name2 || '@' || company;
EXCEPTION -- Exception (optional)
WHEN VALUE_ERROR THEN
DBMS_OUTPUT.PUT_LINE(error_message);
END create_email_address;
조건부
조건문은 영어로 잘 읽기 때문에 상당히 간단하지만
END IF
문이 필요합니다. END
진술은 공통 주제입니다.IF x = 1 THEN
sequence_of_statements_1;
ELSIF x = 2 THEN
sequence_of_statements_2;
ELSIF x = 3 THEN
sequence_of_statements_3;
ELSE
sequence_of_statements_N;
END IF;
CASE
문은 if 문과 매우 유사하지만 잠재적으로 작성하기 더 간단합니다.CASE
WHEN x = 1 THEN sequence_of_statements_1;
WHEN x = 2 THEN sequence_of_statements_2;
WHEN x = 3 THEN sequence_of_statements_3;
ELSE sequence_of_statements_N;
END CASE;
루프는 PL/SQL의 큰 이점입니다. 다음은 두 숫자 사이의 범위 연산자("..")와 "DBMS_OUTPUT.PUT_LINE()"메서드로 표시된 대로 0과 10 사이의 숫자를 기록하는
FOR
루프의 매우 기본적인 개요입니다.DECLARE
var NUMBER;
BEGIN
FOR var IN 0 .. 10 LOOP
DBMS_OUTPUT.PUT_LINE(var);
END LOOP;
END;
이 PL/SQL에 대한 간략한 소개가 제가 재미있게 읽었던 만큼 여러분도 즐거우셨기를 바랍니다! 저는 세계에서 가장 인기 있는 데이터베이스 시스템인 Oracle Database에 대해 더 깊이 파고들어 데이터베이스 주제에 대한 저의 여정을 계속하게 되어 매우 기쁩니다!
source
Reference
이 문제에 관하여(PL/SQL 기초), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/gduple/pl-sql-basics-cho텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)