반응형
프로시저(procedure)와 declare 차이
PL/SQL
- declare 변수 선언
- 프로시저
PL/SQL
procedure(프로시저)와의 차이점은 procedure는 이름을 저장하여 나중에도 사용할 수 있지만
declare는 한번 실행 후 소멸한다는 점이다.
디클리어 만드는 방법
declare
v_no number(5);
begin
v_no:=10;--변수초기화
dbms_output.put_line('v_no = '|| v_no);
end;
PL/SQL의 결과는 하단의 DBMS Output(disabled)에서 확인할 수 있다.
출력정보가 쌓이기때문에 DBMS Output(disabled) 에서 새페이지를 눌러주는것이 좋다.
declare
v_no number(5);
v_name VARCHAR(20);
begin
v_no:=10;--변수초기화
v_name:='김유신';
dbms_output.put_line('사원번호 사원이름');
dbms_output.put_line('------------------------------');
dbms_output.put_line('v_no = '||v_no||' '||v_name);
end;
결과값 :
사원번호 사원이름
------------------------------
v_no = 10사원번호 사원이름
------------------------------
v_no = 10 김유신
declare
v_no number(5);
v_name VARCHAR(20);
cday VARCHAR(20);
begin
v_no:=10;--변수초기화
v_name:='김유신';
cday:= TO_CHAR(sysdate, 'YYYY-MM-DD');
dbms_output.put_line('사원번호 사원이름');
dbms_output.put_line('------------------------------');
dbms_output.put_line('v_no = '||v_no||' '||v_name);
dbms_output.put_line(cday);
end;
또는
declare
v_no number(5);
v_name VARCHAR(20);
cday varchar2(30);
begin
v_no:=10;--변수초기화
v_name:='김유신';
dbms_output.put_line('사원번호 사원이름');
dbms_output.put_line('------------------------------');
dbms_output.put_line('v_no = '||v_no||' '||v_name);
SELECT TO_CHAR(sysdate, 'YYYY-MM-DD') INTO cday FROM dual;
dbms_output.put_line(cday);
end;
의 결과값은
사원번호 사원이름
------------------------------
v_no = 10 김유신
2020-03-19
이다.
SELECT TO_CHAR(sysdate, 'YYYY-MM-DD') INTO cday FROM dual;
의 경우 저장프로시저 안에서만 사용이 가능하다.
하지만
PL/SQL에는 변수에 바로 대입하여 출력이 가능하다
프로시저
상단의 declare를 is로 바꾸고 최상단에
CREATE OR REPLACE procedure proc_variable(msg IN varchar2)
를 붙이면프로시저를 만들 수 있게 된다.
(OR REPLACE가 없으면 수정이 불가하다.)
CREATE OR REPLACE procedure proc_variable(msg OUT varchar2)
is
v_no number(5);
v_name VARCHAR(20);
cday varchar2(30);
begin
v_no:=10;--변수초기화
v_name:='김유신';
dbms_output.put_line('사원번호 사원이름');
dbms_output.put_line('------------------------------');
dbms_output.put_line('v_no = '||v_no||' '||v_name);
SELECT TO_CHAR(sysdate, 'YYYY-MM-DD') INTO cday FROM dual;
dbms_output.put_line(cday);
end;
msg 값 확인방법은
SQL> variable msg varchar2(30);
SQL> exec proc_variable(:msg);
SQL> print msg
0부터 10까지의 짝수의 합 구하기
CREATE OR REPLACE procedure proc_hap(tot OUT number)
is
i number(5);
begin
i :=0;
tot :=0;
LOOP
i:= i+1;
IF MOD(i,2)=0 THEN
tot:=tot+i;
END IF;
EXIT WHEN i=10;
END LOOP;
end;
반응형
'🖥Web > 🔥DB & SQL' 카테고리의 다른 글
[Sql] SQL Cursor (0) | 2020.03.20 |
---|---|
[SQL] SQL의 예외처리 (0) | 2020.03.20 |
[SQL] 프로토콜에서 procedure 생성 (0) | 2020.03.17 |
[SQL]MySql - 2 고급 (0) | 2020.01.05 |
[SQL]MySql - 1 초급 (0) | 2020.01.05 |