안녕하십니까 오라클를 배우는 학생입니다.
pl/sql상에서 배열를 어떻게 선언하는지 알려주세용.
또
begin
.
accept name prompt "이름을 입력해주세요"
end;
pl/sql에서 accept 가 가능한지요 만약 가능하지 않으면 어떻게
사용자에게서 값을 받는지 알고 싶습니다.
CREATE TABLE CUSTOMER ( customreg varchar2(14) NOT NULL, cname varchar2(25) NOT NULL, phone varchar2(20), PRIMARY KEY (customreg));
CREATE TABLE ACCOUNT ( accountno number(10) NOT NULL, customreg varchar2(14), adate date, atype varchar2(20), abalance number(15), PRIMARY KEY (accountno), FOREIGN KEY (customreg) REFERENCES customer(customreg));
CREATE TABLE TRADING ( tradeno number(14) NOT NULL, accountno number(10) NOT NULL, ttype varchar2(20), tdate date, tmoney number(15), PRIMARY KEY (tradeno), FOREIGN KEY (accountno) REFERENCES account(accountno)); 이 테이블 생성에 대해.... 프로시저 실행하는 대화형 스크립트...
CREATE SEQUENCE S_tradeno INCREMENT BY 1 START WITH 1 maxvalue 99999999999999 noCACHE NOCYCLE ;
CREATE SEQUENCE S_accountno INCREMENT BY 1 START WITH 1 maxvalue 9999999999 noCACHE NOCYCLE ;
CREATE OR REPLACE PROCEDURE Create_account
( NAME customer.cname%TYPE
,MANNO customer.customreg%TYPE
,PHONE customer.phone%TYPE
,v_atype number(1)
,AMOUNT trading.tmoney%TYPE
)
IS CURR_DATE DATE; ACCOUNTNO account.accountno%TYPE;
DEALNO trading.TRADENO%TYPE;
dup_val_on_index EXCEPTION;
TEMP NUMBER(1);
BEGIN
SELECT COUNT(*) INTO TEMP FROM customer WHERE customreg = MANNO;
IF TEMP > 0 THEN RAISE dup_val_on_index;
END IF;
SELECT SYSDATE INTO CURR_DATE FROM DUAL;
-- 다른 유저가 시퀀스를 사용할 수 있으므로....
SELECT S_accountno.NEXTVAL INTO ACCOUNTNO FROM DUAL;
SELECT S_tradeno.NEXTVAL INTO DEALNO FROM DUAL;
INSERT INTO customer VALUES (MANNO, NAME, PHONE);
if v_atype = '1' then
INSERT INTO account VALUES (ACCOUNTNO, MANNO, CURR_DATE, '보통예금' , AMOUNT);
elsif v_atype = '2' then
INSERT INTO account VALUES (ACCOUNTNO, MANNO, CURR_DATE, '정기예금' , AMOUNT);
else raise dup_val_on_index ;
end if;
INSERT INTO trading VALUES (DEALNO, S_accountno.CURRVAL, '입금', CURR_DATE, AMOUNT);
commit;
EXCEPTION
WHEN dup_val_on_index THEN
dbms_output.put_line('이미 등록된 고객입니다.');
END;
/
위 내용은... 계좌 개설 프로시저임.. 이것을......
set verify off SET SERVEROUTPUT ON
begin dbms_output.put_line('은행 계좌를 생성하겠습니다.'); end;
ACCEPT cr1 PROMPT '고객의 이름을 입력하시오 :' ACCEPT cr2 PROMPT '고객의 주민등록번호를 입력하시오(예.000000-0000000) :' ACCEPT cr3 PROMPT '전화번호를 입력하시오(예.000-0000-0000) :' ACCEPT cr4 PROMPT '거래하실 계좌의 종류의 번호를 입력하시오(보기☞ 1.보통예금 2.정기예금) :' ACCEPT cr5 PROMPT '계좌를 여는데 최소한의 금액(5000)을 입급하셔야합니다. 입금하실 금액을 입력하시오 :'
exec create_account('&&cr1','&&cr2','&&cr3','&&cr4',&&cr5);
로 ....입력 받아서 값을 줄수 있음......ㅋㅋㅋ 잘 돌아감.....