PL/SQL
일반 프로그래밍 언어 요소를 다 갖고 있으며, 데이터베이스 업무를 처리하기 위한 최적화된 언어
BLOCK 구조로 다수의 SQL 문을 한번에 처리하므로 수행 속도가 빠름
SET SERVEROUTPUT ON;
BEGIN
-- console.log, System.out.println()
DBMS_OUTPUT.PUT_LINE('hello');
END;
/
DECLARE
-- int V_NUM =1234;
-- String V_STR = "";
V_NUM NUMBER(4) := 1234;
V_STR VARCHAR2(10);
BEGIN
V_STR := 'HELLO';
DBMS_OUTPUT.PUT_LINE('V_NUM : '||V_NUM);
DBMS_OUTPUT.PUT_LINE('V_NUM : '||V_STR);
END;
/
DECLARE
V_SCORE NUMBER :=95;
V_GRADE VARCHAR2(2) := '';
BEGIN
IF(V_SCORE >= 90) THEN
V_GRADE := 'A';
ELSIF(V_SCORE >= 80)THEN
V_GRADE := 'B';
ELSIF(V_SCORE >= 70)THEN
V_GRADE := 'C';
ELSE
V_GRADE := 'F';
END IF;
DBMS_OUTPUT.PUT_LINE('점수 : '||V_SCORE || ' / 등급 : ' || V_GRADE);
END;
/
DECLARE
V_NUM NUMBER := 3;
BEGIN
-- for(int I=0; I<=9; I++)
FOR I IN 1..9 LOOP
DBMS_OUTPUT.PUT_LINE(V_NUM || '*' || I || '=' || V_NUM*I);
END LOOP;
END;
/
DECLARE
V_NUM NUMBER(3) := 10;
BEGIN
FOR I IN 1..V_NUM LOOP
IF MOD(I, 2) =0 THEN
DBMS_OUTPUT.PUT_LINE( I || '는 짝수');
ELSE
DBMS_OUTPUT.PUT_LINE( I || '는 홀수');
END IF;
END LOOP;
END;
/
DECLARE
-- 변수정의
BEGIN
-- 수행
-- INSERT INTO 테이블명(컬럼명) VALUES(추가할값)
INSERT INTO MEMBER2(USERID, USERPW, USERNAME, USERAGE, USERDATE)
VALUES('A', 'A', '가', 11, CURRENT_DATE);
COMMIT;
EXCEPTION
-- 오류처리
WHEN OTHERS THEN -- 모든예외
ROLLBACK;
END;
/
SELECT * FROM MEMBER2;
/
DECLARE
-- 변수정의
BEGIN
-- 수행
-- INSERT INTO 테이블명(컬럼명) VALUES(추가할값)
FOR I IN 1..10 LOOP
INSERT INTO MEMBER2(USERID, USERPW, USERNAME, USERAGE, USERDATE)
VALUES('A'|| I, 'A', '가', 11, CURRENT_DATE);
END LOOP;
COMMIT;
EXCEPTION
-- 오류처리
WHEN OTHERS THEN -- 모든예외
ROLLBACK;
END;
/
SELECT * FROM MEMBER2;
/
DECLARE
-- 변수정의
V_MEM MEMBER2%ROWTYPE;
V_USERID MEMBER2.USERID%TYPE; -- VARCHAR2(30)
BEGIN
-- SELECT *FROM (테이블명) WHERE (조건);
SELECT * INTO V_MEM FROM MEMBER2 WHERE USERID='A';
DBMS_OUTPUT.PUT_LINE( V_MEM.USERID );
DBMS_OUTPUT.PUT_LINE( V_MEM.USERNAME );
END;
/
DECLARE
CURSOR CUR IS (SELECT * FROM MEMBER2);
BEGIN
FOR TMP IN CUR() LOOP
DBMS_OUTPUT.PUT_LINE( 'USERID : ' || TMP.USERID );
END LOOP;
END;
/