PL/SQL 프로시져의 구조 및 변수 선언 방법을 설명합니다.

가장 작은 프로시져.

begin
	null;
end;

plsql 프로그램은 프로시져라고 부르며 begin으로 시작해서 end; 로 끝난다. begin과 end사이에 아무런 명령이 없으면 구문 오류이므로 null;을 넣던지 다른 명령을 넣던지 해야 한다.

변수가 없는 프로그램은 거의 없다. 변수를 선언하는 방법은 아래와 같다. 변수의 선언과 범위는 매우 직관적이며 제한적이어서 사용자가 변수를 남용할 소지를 없애준다. 모든 변수는 사용될 장소에서 가까운곳에서 선언되고 사용된 후 범위에서 사라지도록 해야 한다.

declare
	myname varchar2(10);
begin
	null;
end;

myname은 begin과 end; 사이에서만 유효하고 end;를 지나가면 참조될 수 없다. 위에서 모든 변수는 declare와 begin사이에 선언된다. 선언하면서 초기화 할 수도 있고 begin에 들어가서 할당할 수도 있다.

declare
	myname varchar2(10) := 'jongmin';
	sex varchar2(10);
begin
	sex := 'male';
	dbms_output.put_line(myname);
	dbms_output.put_line(sex);
end;

Toad에서는 F5나 F9로 위 프로그램을 실행해 볼 수 있다. Sql*Plus라면 위 스크립트를 printout.sql로 저장하고 해당 스크립트가 있는 위치에서 Sql*Plus가 수행시키고 아래 명령어로 프로그램을 수행시킬 수 있다.

set serverout on;
@ ./printout.sql;
/

중첩된 프로시져

프로시져는 중첩되거나 다른 프로시져와 나란히 배치될 수 있다.

declare
	foo varchar2(10);
begin
	foo := 'hello';
	
	declare
		bar varchar2(10);
	begin
		foo := 'hi';
		bar := 'world';
	end;
	
	begin
		foo := 'Greeting';
	end;
end;

변수의 범위

변수는 begin과 end;사이에서 유효하고 중첩된 경우에는 상위의 단위에서 선언된 변수는 포함된 단위에서는 참조 가능하나 그 반대는 불가하다. 위 프로그램에서 foo는 최상위 단위애서 선언되었으므로 모든 단위에서 참조 가능하지만 bar는 두 번째 해당 범위를 넘어서면 참조 할 수 없다.