SET SERVEROUTPUT ON
BEGIN << outer >>
DECLARE
v_sal NUMBER(7, 2) := 60000;
v_comm NUMBER(7, 2) := v_sal * 0.20;
v_message VARCHAR2(255) := ' eligible for commission';
BEGIN
DECLARE
v_sal NUMBER(7, 2) := 50000;
v_comm NUMBER(7, 2) := 0;
v_total_comp NUMBER(7, 2) := v_sal + v_comm;
BEGIN
v_message := 'CLERK not' || v_message;
--dbms_output.put_line(outer.v_comm); --4 12000
outer.v_comm := v_sal * 0.001;
outer.v_comm := outer.v_comm**2;
--dbms_output.put_line(v_message); --1 CLERK not eligible for commission
--dbms_output.put_line(v_comm); --3 0
END;
v_message := 'SALESMAN' || v_message;
--dbms_output.put_line(v_total_comp); --2 오류
--dbms_output.put_line(v_comm); --5 15000
--dbms_output.put_line(v_message); --6 SALESMANCLERK not eligible for commission
END;
END outer;
/
SET SERVEROUTPUT OFF
결과값
2500
현재 outer.v_comm(전역변수 v_comm)의 값은 50이 된다.(굵은 글씨체)
**를 사용해서 제곱을 만들어서 50의 제곱인 2500이 나온다.
첫댓글 SQL문이 아니라 PL/SQL문에서만 **이 사용 가능하다는 걸까요?
되는 경우
SET SERVEROUTPUT ON;
DECLARE
v_num NUMBER := 2**3;
BEGIN
dbms_output.put_line(v_num);
END;
/
되는 경우
SET SERVEROUTPUT ON;
ACCEPT p_num1 PROMPT '첫번째 숫자를 입력하시오.'
ACCEPT p_num2 PROMPT '두번째 숫자를 입력하시오.'
DECLARE
v_num1 NUMBER(10) := &p_num1;
v_num2 NUMBER(10) := &p_num2;
v_tot NUMBER(10);
BEGIN
v_tot := v_num1 ** v_num2;
dbms_output.put_line(v_tot);
END;
/
SET SERVEROUTPUT OFF
안되는 경우
DECLARE
v_num NUMBER(10);
BEGIN
SELECT 2**3
FROM dual;
END;
/