Creating and Running PL/SQL Code
※ Oracle PL/SQL Programming 6판 기준입니다. (O'REILLY)
#Creating and Editing Source Code (22p)
What is unique about PL/SQL is the fact the the source code for stored programs must be loaded into the database before it can be compiled and executed.
--> PL/SQL은 다른 프로그램(C 등)과 달리, 데이터 베이스 안에서 compile되고 구동되어야 하기 때문에 일반 java program 등과 달리 version 관리 등에 고민해야 할 부분들이 발생한다.
#Starting Up SQL*Plus (24p)
3 ways to connect to a database with SQL*Plus
(1)
>sqlplus
Enter user-name : system
Enter password : ******
connect to (...)
SQL>
(2)
> sqlplus system/******
※do not recommend because of possibility of the password being leaked
--> 어깨너머로 훔쳐 볼 수 도 있고, UNIX등 multi user 환경에서는 실제로 OS user가 수행한 명령어를 확인할 수 있다.
(3)
> sqlplus /nolog
SQL> connect system/******
SQL> Connected.
--> nolog 구문을 이용하여 접속은 후에 맺는 식으로 패스워드 유출을 막을 수 있음.
#Running A PL/SQL Program (27p)
예제1)
begin
dbms_output.put_line('Hey look, ma!');
end;
/
--------------------------------------
PL/SQL 프로시저가 성공적으로 완료되었습니다.
예제2)
set serveroutput on
begin
dbms_output.put_line('Hey look, ma!');
end;
/
--------------------------------------
PL/SQL 프로시저가 성공적으로 완료되었습니다.
Hey look, ma!
※기억해야 할 점
1. set serveroutput on 옵션을 켜야 PL/SQL 결과가 출력된다.
2. /(slash)를 반드시 입력해야 한다.
** /(slash)의 역할 및 특징 **
To tell SQL*Plus that you're done entering a PL/SQL statement, you must usually include a trailing slash
1. sql*plus 상에서 / 는 '가장 최근에 입력된 문장을 수행하라'는 명령어이다. (PL/SQL, SQL 상관없이)
2. The slash is a command unique to SQL*Plus; it is not part of the PL/SQL language, nor is it part of SQL.
3. It must appear on a line by itself; no other commands can be included on the line.
4. Oracle 9i 이전의 버전은 / 앞, 뒤의 공백유무에 따라 수행이 안될수도 있다. (9i 이후버전은 앞뒤 공백 모두 상관 없다.)
예제3) BEGIN, END, / (slash) 입력없이 수행하기
execute dbms_output.put_line('Hey look, Ma!')
exec dbms_output.put_line('Hey look, Ma!!!!')
EXECUTE란 command를 통해 Begin, end, /를 모두 생략가능하다.
1) semicolon (;)은 붙여도 되고 안붙여도 된다.
2) execute의 축약형으로 exec를 사용가능하다.