database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 40114 게시물 읽기
No. 40114
프로시져생성을 하려합니다..
작성자
새하정(lsmsj)
작성일
2013-04-26 17:20
조회수
6,812

복잡한로직은 아니지만...처음생성해보는거라...좀 막막함이있어 이렇게 글을적습니다.

1. 테이블 구성은 아래와 같습니다.

   REQUEST 라는 테이블의 컬럼이 CUSTOMER,  PRICE,   END_DATE 라는 컬럼이 3개 있습니다.

   MASTER 라는 테이블에는 CUSTOMER,  PRICE  라는 컬럼이 2개 있습니다.

   2테이블의 CUSTOMER의 값은 서로 키값이며.  제가 생성하고자 하는 프로시져는 REQUEST 테이블의 END_DATE의 값 (날짜) 유효기간이 지남과 동시에.

   MASTER.PRICE - REQUEST.PRICE 금액을 빼주는 프로시저를 생성하고자 합니다..

   일일 배치로 (하루에 1번 새벽 1시정도쯤 잡을걸어서..) 조금 막막하네요..ㅠㅠ...선배님들의 도움이 절실히 필요합니다..

   간략한..주석도 혹시...부탁드릴수 있을까요...

이 글에 대한 댓글이 총 5건 있습니다.

"날짜) 유효기간이 지남과 동시에"

=> 유효기간이 지난 데이터를 어떻게 구분을 하죠?

    (sysdate 를 체크해서 하루전 날짜만 가져와서 금액을 빼면 되나요?)


데이터와 결과값이 있으면 올려주세요.

 

아린(arin76)님이 2013-04-26 17:27에 작성한 댓글입니다.

넵. 맞습니다. Sysdate를 기준으로 REQUEST 테이블의 END_DATE를 비교하려합니다.

이걸 프로시져로 해도되는건지..아니면 다른 방법이 있을까요..

새하정(lsmsj)님이 2013-04-26 17:58에 작성한 댓글입니다.
CREATE TABLE request(
customer VARCHAR2(10),
price NUMBER,
end_date VARCHAR2(8))

INSERT INTO request
SELECT '1', 10, '20130425' FROM dual UNION ALL   
SELECT '1', 20, '20130426' FROM dual UNION ALL
SELECT '2', 30, '20130425' FROM dual UNION ALL
SELECT '2', 40, '20130426' FROM dual
   
CREATE TABLE master(
customer VARCHAR2(10),
price NUMBER)

insert into master
SELECT '1', 100 FROM dual UNION ALL   
SELECT '2', 100 FROM dual
           
 
-- 하루전날 데이터를 찾아서 금액 차감
UPDATE master m
   SET price 
     = (SELECT m.price - r.price
          FROM request r
         WHERE m.customer = r.customer
           AND r.end_date = TO_CHAR(SYSDATE-1,'yyyymmdd'))
 WHERE EXISTS 
       (SELECT 1
          FROM request r
         WHERE m.customer = r.customer
           AND r.end_date = TO_CHAR(SYSDATE-1,'yyyymmdd'))
 
 
위 sql 참조해서 프로시져 생성후   job 처리 하시면 될듯 하네요.
아린(arin76)님이 2013-04-26 18:02에 작성한 댓글입니다.
이 댓글은 2013-04-26 18:03에 마지막으로 수정되었습니다.

ㅠ.ㅠ....아린님 이렇게 빠르게 답변을 달아주시다니..

너무 감사합니다...한번 꼼꼼히 살펴보고..제껄로 만들도록 노력하겠습니다.

 

정말 감사합니다..( __) 주말 잘보내세욥.!!!

새하정(lsmsj)님이 2013-04-26 18:09에 작성한 댓글입니다.
한 고객이 하루에  두건이상 존재할 경우는 아래와 같이 SUM 처리 하시면 됩니다.
 
UPDATE master m
   SET price 
     = (SELECT m.price - SUM(r.price)
          FROM request r
         WHERE m.customer = r.customer
           AND r.end_date = TO_CHAR(SYSDATE-1,'yyyymmdd'))
 WHERE EXISTS 
       (SELECT 1
          FROM request r
         WHERE m.customer = r.customer
           AND r.end_date = TO_CHAR(SYSDATE-1,'yyyymmdd'))
아린(arin76)님이 2013-04-26 18:14에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
40117DBLink만들때 users까지 넣을수 있나요?
나우
2013-04-30
5379
40116잡스케쥴을 등로을 했는데요. 급.ㅠ.ㅠ [1]
새하정
2013-04-29
5888
40115Oracle 잡스케쥴 등록을 해보려합니다.
새하정
2013-04-29
6032
40114프로시져생성을 하려합니다.. [5]
새하정
2013-04-26
6812
40113쿼리 문의좀 드립니다. [3]
김진수
2013-04-26
6205
40112여러 무림 고수님들 (Select후 결과 Update) 문의 드립니다. [17]
허접떼기
2013-04-26
6221
40111insert update 두가지를 동시에 처리를 하려고 합니다. [1]
오라클
2013-04-26
7723
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다