-- 결재 데이터를 추가하는 프로시져
CREATE OR REPLACE PROCEDURE payData_insert
(
-- 입력받는 기본 데이터
i_reservationNo IN payData.reservationNo%TYPE,
i_payMethod IN payData.payMethod%TYPE
)
IS
-- 데이터 처리에 사용할 변수
v_payCost NUMBER(8) := 0;
v_discountRate FLOAT(5) := 0;
v_seatCost NUMBER(8) := 0;
v_sheet reservationData.sheet%TYPE;
v_sportsCode reservationData.sportsCode%TYPE;
v_seat reservationData.seat%TYPE;
strSql VARCHAR(1000);
BEGIN
-- 경기코드를 변수에 저장
SELECT reservationData.sportsCode INTO v_sportsCode
FROM reservationData
WHERE reservationData.reservationNo = i_reservationNo;
-- 예매된 좌석형태를 변수에 저장
SELECT reservationData.seat INTO v_seat
FROM reservationData
WHERE reservationData.reservationNo = i_reservationNo;
SELECT v_seat INTO v_seatCost
FROM playinfo, stadiumSeatCostF
WHERE playinfo.sportsCode = v_sportsCode AND
stadiumSeatCostF.stadiumCode = playinfo.stadiumCode;
-- 할인율/가격을 변수에 저장
SELECT discount.discountRate INTO v_discountRate
FROM reservationData, discount
WHERE reservationData.discountCode = discount.discountCode AND
reservationData.reservationNo = i_reservationNo;
-- 예매매수를 변수에 저장
SELECT reservationData.sheet INTO v_sheet
FROM reservationData
WHERE reservationData.reservationNo = i_reservationNo;
IF v_discountRate >= 1 THEN
v_payCost := ( v_seatCost - v_discountRate ) * v_sheet;
END IF;
-- 입력된 데이터를 insert
INSERT INTO payData ( reservationNo, payState, payCost, payMethod )
VALUES ( i_reservationNo, 'N', v_payCost, i_payMethod );
COMMIT;
END payData_insert;
-------------------------------------------------------------------------------------------------------------
프로시져 작성중 궁금한 점이 있어서 질문 드립니다.
위에 빨간색으로 표시한 부분이 좌석의 구역번호(N,S,E,W)를 의미하는데요,
다른 테이블에 구역에 따라 좌석의 가격이 들어가 있는데 그것을 구하려 합니다.
검색할 칼럼명을 변수로 해서 계속 바꿔주면서 검색하고 싶은데..
v_seat의 값이 v_seatCost 로 들어가리더라구요... 검색할 칼럼명인 v_seat를 변수로해서
사용하는 방법은 없는건지 궁금합니다.