[Oracle] PL/SQL
PL/SQL(Procedure Language / Structured Query Language)은 오라클 DBMS에서 SQL 언어를 확장하기 위해 사용하는 컴퓨터 프로그래밍 언어. 주로 자료 내부에서 SQL 명령문만으로 처리하기에는 복잡한 자료의 저장이나 프로시저와 트리거 등을 작성하는 데 쓰인다.
주석 처리는 -- 또는 /* */
CREATE OR REPLACE PROCEDURE 프로시져이름 (
변수명 IN DATATYPE -- Mode를 생략하면 default 로 IN
변수명 OUT DATATYPE
변수명 IN OUT DATATYPE
)
IS
[선언문]; -- 변수의 선언
-- v_cnt NUMBER := 0; --프로시저 선언부에서 변수초기화하는 방법
BEGIN
실행문;
[EXCEPTION]
END;
/
/* 예제 */
CREATE OR REPLACE PROCEDURE update_sal
(
/* IN Parameter */
v_empno IN NUMBER
)
IS
BEGIN
UPDATE emp
SET sal = sal * 1.1
WHERE empno = v_empno; -- PL/SQL 블록 내에서는 한 문장이 종료할 때마다 세미콜론(;) 을 사용.
COMMIT; -- 프로시저는 자동 커밋되지 않으므로 반드시 INSERT, UPDATE, DELETE 에서 COMMIT 해야한다.
END update_sal;
/ -- PL/SQL 블록은 행에 / 가 있으면 종결됨.
/* 프로시저 호출 */
EXECUTE update_sal(7369);
자료출처 : http://www.gurubee.net/lecture/1041 를 기준으로 다른 자료도 참조하면서 적었다.
교육은 받았는데 오라클 DB를 만질 일이 없다보니 교육도 집중해서 듣지 않아 세부적인 것은 잘 모른다.
그냥 간단한 것만 기록차원에서 적어둔다.
Function은 반드시 그 결과값을 리턴한다.
CREATE OR REPLACE FUNCTION 함수명 (
변수명 [MODE] DATATYPE,
변수명 [MODE] DATATYPE
)
RETURN 리턴할데이터타입 --값
IS
[선언문];
BEGIN
실행문;
[EXCEPTION]
END;
/
CREATE OR REPLACE FUNCTION get_table_size
(p_table_name varchar2)
return number
is
outval number;
BEGIN
select ROUND(SUM(bytes)/1024/1024) INTO outval
FROM user_segments
WHERE segment_name = p_table_name
and segment_type ='TABLE'
group by segment_name;
RETURN outval;
END;
/