Programming49 오라클[sql] 커서 CURSOR CURSOR ▶ SQL 문장을 실행 할 떄 오라클 서버측에서 명령어를 분석하고 싱행되는 곳 ▶ 분석하고 실행하는 영역을 커서 : 메모리를 항당하는 작업 ▶ 오라클에서 지원하는 기능인데 자동 저장되는 데이터가 1행임. : 묵시적커서 ▶ SQL%종류 SQL%ROWCOUNT : 최근수행한 SQL의 문장에 의해서 영향을 받은 행의 수 SQL%FOUND : 최근수행한 SQL의 문장이 하나 이상의 행에 영향을 주면 TRUE SQL%NOTFOUND : 최근수행한 SQL의 문장이 어떤행에도 영향을 주지 못하면 TRUE SQL%ISOPEN : 자동으로 커서를 닫기 때문에 항상 FALSE ▶ DELETE > 영향을 미칠겁니다. >> IF SQL%FOUND : 영향이 있다면 true >> THEN SQL%ROWCOUNT 몇.. 2022. 9. 24. 오라클[sql] 반복문 반복문 문법 LOOP IF 조건 THEN EXIT; -- 종료문 END IF; END LOOP; LOOP EXIT WHEN 조건; END LOOP; WHILE 조건 LOOP END LOOP; FOR 변수 IN 최소값..최대값 LOOP -- 변수값이 최소값부터 최대값으로 한번씩 증가 END LOOP; 예제 - 구구단 ACCEPT p_dan PROMPT '구구단 단 입력?' DECLARE v_dan INTEGER := &p_dan; cnt INTEGER; BEGIN FOR i IN 1..9 LOOP cnt := v_dan * i; DBMS_output.put_line(v_dan || ' x ' || i || ' = ' || cnt); END LOOP; END; / 예제 - 1~100 홀수 합산 / 짝수 합산.. 2022. 9. 24. 오라클[sql] 조건문 IF / CASE 조건문 IF 조건문 IF 조건 THEN 쿼리문; ELSIF 조건 THEN 쿼리문; ELSE 쿼리문; -- ELSE 아무것도 없으면 ELSE NULL; 라고 작성 END IF; CASE 조건 CASE 조건 WHEN 구조 THEN 쿼리문; WHEN 상태 THEN 쿼리문; ELSE 쿼리문; END CASE; 예제 ▶ SET serverOUTPUT ON ▶ 사원테이블에 입력 > 조건 부서번호 20번이면 급여 30%를 추가 하고 입력 ACCEPT p_name PROMPT '이름 : ' ACCEPT p_sal PROMPT '급여 : ' ACCEPT p_deptno PROMPT '부서번호 : ' DECLARE v_name emp.ename%TYPE := UPPER('&p_name'); v_sal emp.sal%TYP.. 2022. 9. 24. 오라클[sql] PL/SQL PL/SQL ▶ PL/SQL -- 쿼리 ;(세미콜론)을 통해서 항상 한문장 한문장 실행을 했습니다. -- A 쿼리실행 다음에 B쿼리를 실행해야하는 경우가 발생 -- SQL 순차적으로 처리하기 위한 확장된 언어 -- SQL + 일반프로그래밍언어 결합 : 변수개념도 생기고 제어문개념도 생김 -- 성능향상, 무결성때문에 여러 SQL문장을 하나의 블록으로 구현하는 방법 ▶ SQL 단점 -- 한번에 하나의 쿼리만 실행 -- if 문을 통해서 쿼리문 전체를 제아가 불가능 -- 변수가 없음 -- 에러처리가 없음 ▶ PL/SQL 의 유형 -- 익명블록 : 이름이 없고 1회 실행하는 유형 -- 프로시저 : 이름이 존재, 반복된 로직을 실행하는 유형 > DB에 저장된 형태 -- 함수 : 프로시저 중에 리턴이 반드시 있는 .. 2022. 9. 24. 오라클[sql] 시퀀스 / 인덱스 시퀀스 ▶ 자동증가수 시퀀스 생성 CREATE SEQUENCE seq_no Minvalue 1 -- 최소숫자 Maxvalue 9999999999 -- 최대숫자 Increment by 1 -- 증가치 start with 1 -- 시작숫자 nocache -- 조금빠르게 접근가능한 옵션 noorder -- 요청되는 순서대로 할당 nocycle -- 다시 재반복여부 ; 시퀀스 호출방법 ▶시퀀스이름.nextval : 다음 생성할 시퀀스 값 ▶ 시퀀스이름.currval : 현재 시퀀스 값 SELECT seq_no.nextval from dual; SELECT seq_no.currval from dual; 예제 CREATE TABLE temp( no NUMBER Primary key, name VARCHAR2(20).. 2022. 9. 24. 오라클[sql] merge / commit / rollback ▶ DML -- INSERT UPDATE DELETE / SELECT ▶ DDL -- CREATE ALTER DROP / TRUNCATE / RENAME ▶ CREATE AS SELECT ▶ INSERT INTO SELECT ▶ INSERT ALL ▶ MERGE : INSERT + UPDATE 합친 기능 -- 기존테이블에 자료 존재하면 UPDATE (자동) -- 없는 데이터는 INSERT 진행 MERGE INTO 테이블명 USING 복사할데이터를 담은 테이블명 ( 복사할것이 없으면 daul) ON -- 조인조건 WHEN MATCHED THEN UPDATE SET WHEN NOT MATCHED THEN INSERT () VALUES (); ▶ COMMIT / ROLLBACK -- INSERT / UPDAT.. 2022. 9. 24. 이전 1 2 3 4 5 6 ··· 9 다음