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 28763 게시물 읽기
No. 28763
제가만든 간단한 procedure인데요..오류가..ㅠ.ㅠ
작성자
김성수(suya55)
작성일
2006-11-19 18:12
조회수
10,332

SQL> CREATE OR REPLACE procedure checkDelay_proc
  2  IS
  3  v_num suya55.대여.대여번호%TYPE;
  4  v_state suya55.대여.반납여부%TYPE;
  5  v_date suya55.대여.대여일%TYPE;
  6  v_return suya55.대여.대여기간%TYPE;
  7  cursor lend_cursor IS
  8      select 대여번호,반납여부,대여일,대여기간
  9      from suya55.대여
 10      where suya55.대여.반납여부 = '대여중'  and sysdate-suya55.대여.대여일 >대여기간
 11  FOR UPDATE;
 12  BEGIN
 13  open lend_cursor;
 14  LOOP
 15      FETCH lend_cursor into v_num,v_state,v_date,v_return;
 16          update 대여 set 반납여부='연체중' where current of lend_cursor;
 17      EXIT when lend_cursor%rowcount>5 or lend_cursor%notfound;
 18  END LOOP;
 19  CLOSE lend_cursor;
 20  END checkDelay_proc;
 21  /

프로시저가 생성되었습니다.

SQL> execute checkDelay_proc
BEGIN checkDelay_proc; END;

*
1행에 오류:
ORA-01410: ROWID가 부적합합니다
ORA-06512: "SUYA55.CHECKDELAY_PROC", 줄 16에서
ORA-06512: 줄 1에서



--------------
비디오샾을 만들고있는데요. 비디오샾에서 프로그램을 가동시키면 이 프로시져가 동작하구
이녀석은 대여중인 비디오중 기간이 지난놈들을 골라 '연체중' 이라는 글자로 바꾸는 프로시져입니다.
근데. 컴파일은 성공적으로 되는데 위에같은 오류가 뜨구요...
isqlpluse에서 실행시키면 컴파일오류와 함께 생성되구 실행시키면 아래와 같은 오류가 뜹니다.

BEGIN checkDelay_proc; END;

      *
1행에 오류:
ORA-06550: 줄 1, 열7:PLS-00905: SUYA55.CHECKDELAY_PROC 오브젝트가 부당합니다
ORA-06550: 줄 1, 열7:PL/SQL: Statement ignored

제생각엔 아무리 뚫어져라 봐도 틀린곳이 안보이는데..ㅠ.ㅠ
제발 도와주세요....ㅠ.ㅠ

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

안녕하세요 잠시 뭐 찾으려고 들렀다가 잠깐 봤는데요

맞을지 틀릴지 모르지만 ^^


ORA-06512: "SUYA55.CHECKDELAY_PROC", 줄 16에서

==> 이오류를 보니까 16줄에

    update 대여 set 반납여부='연체중' where current of lend_cursor;

   이렇게 되어있는데 다른것들을 보니 suya55.대여.반납여부 이런식으로 되  어있던데 suya55는 owner인가보죠? 그쪽 db를 프로시저만으로는 알수 없지만 owner를 여러개 구성하고 최상위 owner에 권한을 준 방식인거 같은데 그러면 16번째줄도 이런식으로 해야 정확히 찾을수 있지 않을 까 생각해봤구요

==> update suya55.대여 set 반납여부='연체중' where current of lend_cursor;



ORA-06550: 줄 1, 열7:PLS-00905: SUYA55.CHECKDELAY_PROC 오브젝트가 부당합니다

==> 여기는 lend_cursor라는 cursor의 select문을 보니

where suya55.대여.반납여부 = '대여중'  and sysdate-suya55.대여.대여일 >대여기간

이라고 되어있는데 대여기간만 owner와 table을 지정하지않고 그냥 써서 그럴 수도 있을 거 같습니다.


직접해보면 금방찾겠지만 이런 오류들은 작성자가 젤 찾기 쉽죠 도움이 되셨길 ...

^^님이 2006-11-20 09:20에 작성한 댓글입니다. Edit

RECORD TYPE을 선언 후 FETCH해야 하지 않을까요?


TYPE lend_rec IS RECORD(

  num suya55.대여.대여번호%TYPE,

  state suya55.대여.반납여부%TYPE,

  date suya55.대여.대여일%TYPE,

  return suya55.대여.대여기간%TYPE

);


방문석(incomnik)님이 2006-11-20 11:04에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
28766오라클의 스탠다드, 엔터프라이즈, 퍼스날의차이? [2]
펭귄도사
2006-11-20
2370
28765Data Migration
김충관
2006-11-20
1299
28764where 조건을 안쓰면 ??? [1]
까먹지마
2006-11-19
1232
28763제가만든 간단한 procedure인데요..오류가..ㅠ.ㅠ [2]
김성수
2006-11-19
10332
28762pl/sql server pages 에 관한 질문입니다.
손님
2006-11-19
1096
28761아우터 조인에 관한 질문입니다. [1]
이히히
2006-11-19
1325
28760이관작업 이것도 되는지요?
이현정
2006-11-19
1072
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2025 DSN, All rights reserved.
작업시간: 0.010초, 이곳 서비스는
	PostgreSQL v17.5로 자료를 관리합니다