본문 바로가기

DataBase/Oracle PL/SQL

[2장] PL/SQL 코드 생성과 실행

* SQL*Plus  실행
SELECT * FROM books;
콘솔이나 GUI 에서는 문장 끝에 세미콜론을 반드시 붙여야 하지만 iSQL*Plus 에서 한 행의 질의를 사용할때는 그럴 필요가 없다.

* PL/SQL 문 입력이 끝났음을 SQL *Plus 에 알리기 위해, 마지막에 슬래시(/) 를 입력해야 한다.
대개 피해를 주진 않지만, 슬래시는 중요한 특징이 몇 가지 있다.
1. 슬래시는 SQL 이든 PL/SQL  이든 상관없이 "가장 최근에 입력된 문장을 실행하라" 는 뜻이다.
2. SQL*Plus  에서 슬래시는 유일한 명령어로서, PL/SQL 이나 SQL 의 일부분이 아니다.
3. 슬래시 자체가 한 행에 나와야 한다
4. 오라클 9i 하위버전의 SQL*Plus 에서 공백을 슬래시 앞에 입력하면 작동하지 않는다.

SQL*Plus의 PL/SQL 사용자는 EXECUTE 명령어를 사용하면
BEGIN , END, 마지막에 붙이는 슬래시를 입력하지 않아도 된다.

원문 SQL >
BEGIN
DBMS_OUTPUT.PUT_LINE('hey look')
END;
/

SQL > EXECUTE DBMS_OUTPUT.PUT_LNE('hey look')

EXECUTE 는 축약될 수 있고, 대소문자를 가리지 않기 때무에, 다음처럼 사용 할 수 있다.

SQL > exec dbms_output.put_line('hey look')

* 스크립트 실행
스크립트 파일명을 알고 있다면 '@' 명령어를 사용하는 것이 스큷트를 실행하는 가장 손쉬운 방법이다.

SQL> @파일이름.확장자명

SQL> START 파일이름.확장자명

@ = START 의 실행결과는 동일하다.

스크립트 파일이 다른 디렉토리에 있으면 파일명을 경로와 함께 쓰면 된다.
SQL> @/파일경로A/파일경로B/파일이름.확장자명

@@ - 현재 실행되는 파일의 디렉토리에서 상대적으로 파일을 찾아라

그래서 다른 디렉토리에 있는 스크립트에서 또 다른 스크립트를 호출한다면?
REM 파일명 :  파일명... REM은 주석
@@파일명.확장자명
@@파일명.확장자명

현재 세션에 사용할 수 있는 SET 값을 모두 보고 싶다면
SQL> SHOW ALL

AUTOCOMMIT

기본값을 AUTOCOMMIT ON 으로 ,
ON - 커밋되지 않은 변경사항을 커밋한다.
OFF - 커빗되지 않은 변경사항을 롤백 한다.
SQL>SET AUTOCOMMIT OFF[ON]

DISCONNECT

연결된 상태로 데이터베이스와의 연결을 끊고 싶은 경우
SQL>DISCONNECT

자,SQL 명령은 여기까지~ 이제 본격적으로 PL/SQL 의 기본 구문을 알아보도록 하겠습니다~

* 저장프로그램 생성하기.

CREATE 생성 예시문
CREATE FUNCTION wordcount (str IN VARCHAR2)
RETURN PLS_INTEGER
AS
로컬 변수 선언
BEGIN
알고리즘 처리
END;
/

기존에 wordcount 라는 이름의테이블이나 저장 프로그램이 이미 존재하는 경우 오류메시지를 내면서 시패할 것이다. 오라클이 'OR REPLACE' 옵션을 제공하는 이유중 하나가 바로 이것 때문이다.
CREATE 작업의 99% 정도는 작업할 때 이 옵션을 사용하길 원할 것 이라고 한다..(이렇게 강력하게 권고하다니;;;)

CREATE 생성 권고 예시
CREATE OR REPLACE FUNCTION wordcount (str IN VARCHAR2)
RETURN PLS_INTEGER
AS
로컬 변수 선언
BEGIN
알고리즘 처리
END;
/

OR REPLACE 옵션을 사용하므로써 해당 프로그램을 삭제하고 재생성할 때생기는 부작용을 피할 수 있다.
다른 사용자나 롤에 부여되어 있는 객체권한을 계속 유지 할 수 있다는 것이다.

'DataBase > Oracle PL/SQL' 카테고리의 다른 글

[1장] PL/SQL 맛보기  (0) 2010.06.02