최종 업데이트 행을 찾는 쿼리...
프로그래밍???/오라클2012. 4. 9. 16:24
내가 짠 쿼리...
MAX 함수를 이용하여 해당 차량의 가장 마지막 업데이트 시간을 구하고, 해당 차량과 해당 업데이트 시간이 동일한 ROW를 선택했다.
데이터 양이 많아질경우 LASTUPDATETIME에 인덱스를 따로 해주는게 현명할듯 싶다.
vBasesql := 'SELECT B.STARTTIME, B.UPDATETIME FROM ( SELECT MAX(UPDATETIME) LASTUPDATETIME FROM TBL_REPORT WHERE CARNO = :1 ) A, TBL_REPORT B WHERE A.LASTUPDATETIME = B.UPDATETIME AND B.CARNO = :2';
EXECUTE IMMEDIATE vBasesql INTO dtLastStart, dtLastUpdate USING :NEW.CARNO, :NEW.CARNO;
최종 업데이트 행을 찾는 쿼리
select owner, last_ddl_time, object_name, object_type from
( select t1.*, max(last_ddl_time) over (partition by owner) max_time from big_table t1)
where last_ddl_time = max_time;
'프로그래밍??? > 오라클' 카테고리의 다른 글
ORA-01000: 최대 열기 커서 수를 초과‎ (0) | 2012.04.10 |
---|---|
RAC 재시작 관련 사항 (0) | 2012.04.10 |
ORA-01403: no data found 대처 SQL문 (0) | 2012.04.06 |
오라클 날짜형 함수 (0) | 2012.04.05 |
오라클 DATE 관련 함수 (0) | 2012.04.05 |
ORA-01403: no data found 대처 SQL문
프로그래밍???/오라클2012. 4. 6. 12:30
출처 :http://net2.tistory.com/entry/ORA-01403-no-data-found-%EB%8C%80%EC%B2%98
-- 내 생각 : SQL%FOUND로만 처리 가능하리라 생각했지만 BIND 변수를 쓰고 INTO문으로 인해서 EXCEPTION 발생
프로시져 또는 트리거 실행 시 SELECT INTO에서 조회된 쿼리의 ROW가 존재하지 않을때
ORA-01403 에러발생 조치
1. Select 절에서 Row가 없는 경우 Exception으로 뺀다.
예)
select rtptno
into v_rtptno
from mosstbat
where pt_no = :new.q_patientno;
결과가 no_data_found로 나온 경우
아래와 같이 exception을 추가해 준다.
begin
select rtptno
into v_rtptno
from mosstbat
where pt_no = :new.Q_PATIENTNO;
exception
when no_data_found then null;
when others then
null;
end;
'프로그래밍??? > 오라클' 카테고리의 다른 글
RAC 재시작 관련 사항 (0) | 2012.04.10 |
---|---|
최종 업데이트 행을 찾는 쿼리... (0) | 2012.04.09 |
오라클 날짜형 함수 (0) | 2012.04.05 |
오라클 DATE 관련 함수 (0) | 2012.04.05 |
오라클의 TRUNC 함수 (0) | 2012.04.05 |
PERL로 파일입출력
프로그래밍???2012. 4. 6. 10:34
파일을 열고 문자열을 쓰고 닫는 예제는 아래와 같다
#!/usr/bin/perl
$filename = './test.txt';
$my_string = 'test for file write.';
print TEXT $my_string;
close(TEXT);
open(TEXT, $file_name);
$out_string = <TEXT>;
close(TEXT);
'프로그래밍???' 카테고리의 다른 글
Indy10 소켓이용시 참고사항 (3) | 2012.05.08 |
---|---|
TIdTCPServer OnExecute 샘플코드 (0) | 2012.05.07 |
Perl로 시간 처리하기 (0) | 2012.04.06 |
linux에서 mutex를 재귀적으로 사용하는 방법 (0) | 2012.03.26 |
clock_gettime에 대한 자료 (0) | 2011.08.04 |
Perl로 시간 처리하기
프로그래밍???2012. 4. 6. 10:08
출처 :
*** 어제 날짜 구하기
어제 날짜를 알기 위해서는, 단순히 오늘 날짜에 -1을 한다고 되는 것이 아니겠지요.
오늘이 1일이라면, 어제 날짜는 30일이 될 수도 있고, 31일이 될 수도 있고, "어제 달", "어제 년"의 문제도 있습니다.
따라서, time 함수로 현재의 "유닉스 타임"을 구한 후, "하루의 초(sec)"에 해당하는
(24 * 60 * 60) = 86400 초
라는 숫자를 빼면 어제 날짜의 유닉스 타임이 구해집니다. 그 유닉스 타임을 날짜로 변환하면, 어제 날짜가 구해집니다.
#!/usr/bin/perl
use strict; use warnings;
my $rightnow = time - (24 * 60 * 60);
printf("어제 년: %04d\n", (localtime $rightnow) [5] + 1900 );
printf("어제 월: %02d\n", (localtime $rightnow) [4] + 1 );
printf("어제 일: %02d\n", (localtime $rightnow) [3] );
오늘이 1일이라면, 어제 날짜는 30일이 될 수도 있고, 31일이 될 수도 있고, "어제 달", "어제 년"의 문제도 있습니다.
따라서, time 함수로 현재의 "유닉스 타임"을 구한 후, "하루의 초(sec)"에 해당하는
(24 * 60 * 60) = 86400 초
라는 숫자를 빼면 어제 날짜의 유닉스 타임이 구해집니다. 그 유닉스 타임을 날짜로 변환하면, 어제 날짜가 구해집니다.
#!/usr/bin/perl
use strict; use warnings;
my $rightnow = time - (24 * 60 * 60);
printf("어제 년: %04d\n", (localtime $rightnow) [5] + 1900 );
printf("어제 월: %02d\n", (localtime $rightnow) [4] + 1 );
printf("어제 일: %02d\n", (localtime $rightnow) [3] );
*** 내일 날짜 구하기
use strict; use warnings;
my $rightnow = time + (24 * 60 * 60);
printf("내일 년: %04d\n", (localtime $rightnow) [5] + 1900 );
printf("내일 월: %02d\n", (localtime $rightnow) [4] + 1 );
printf("내일 일: %02d\n", (localtime $rightnow) [3] );
*** 오늘 날짜 구하기
펄에서 오늘 현재의 날짜와 시간을 구하는 방법입니다. 연월일 시분초 별로 나누어서, 화면에 출력합니다.
localtime 이라는 함수에 인수를 주지 않고 실행하면, 현재 시간이 연월일 시분초 별로 들어 있는 리스트를 반환합니다.
localtime 이라는 함수에 인수를 주지 않고 실행하면, 현재 시간이 연월일 시분초 별로 들어 있는 리스트를 반환합니다.
파일명: 0.pl
#!/usr/bin/perl
use strict; use warnings;
my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime;
printf("현재 년: %04d\n", $year + 1900);
printf("현재 월: %02d\n", $mon + 1);
printf("현재 일: %02d\n", $mday);
print "\n"; # 줄바꿈
printf("현재 시: %02d\n", $hour);
printf("현재 분: %02d\n", $min);
printf("현재 초: %02d\n", $sec);
print "\n"; # 줄바꿈
printf("오늘 요일: %d\n", $wday); # 일요일 = 0
printf("올해 몇번째 날: %d\n", $yday); # 1월1일 = 0
printf("서머타임 여부: %d\n", $isdst); # 서머타임 없음 = 0
use strict; use warnings;
my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime;
printf("현재 년: %04d\n", $year + 1900);
printf("현재 월: %02d\n", $mon + 1);
printf("현재 일: %02d\n", $mday);
print "\n"; # 줄바꿈
printf("현재 시: %02d\n", $hour);
printf("현재 분: %02d\n", $min);
printf("현재 초: %02d\n", $sec);
print "\n"; # 줄바꿈
printf("오늘 요일: %d\n", $wday); # 일요일 = 0
printf("올해 몇번째 날: %d\n", $yday); # 1월1일 = 0
printf("서머타임 여부: %d\n", $isdst); # 서머타임 없음 = 0
*** 유닉스 타임 얻기 예제
#!/usr/bin/perl
use strict; use warnings;
use strict; use warnings;
print time;
'프로그래밍???' 카테고리의 다른 글
TIdTCPServer OnExecute 샘플코드 (0) | 2012.05.07 |
---|---|
PERL로 파일입출력 (0) | 2012.04.06 |
linux에서 mutex를 재귀적으로 사용하는 방법 (0) | 2012.03.26 |
clock_gettime에 대한 자료 (0) | 2011.08.04 |
FIFO 사용에 대한 오류 및 문제 (0) | 2011.08.02 |