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 41981 게시물 읽기
No. 41981
function에서 autonomous_transaction 사용 문의
작성자
최준영(bman00)
작성일
2024-01-31 11:36
조회수
255

안녕하세요.


자율적 트랜잭션을 이용하여 채번함수를 만들려고 하는데 컴파일 오류가 발생하여 여러 고수님들께 문의 드립니다.


아래는 문의를 위해 간단하게 작성한 함수 소스입니다.


CREATE OR REPLACE FUNCTION FN_TEST (P_NBR_ID IN VARCHAR2)

RETURN NUMBER

IS

    V_NOW_SN    NUMBER(9);

    PRAGMA AUTONOMOUS_TRANSACTION;

BEGIN

    SELECT NVL(NOW_SN, 0)

      INTO V_NOW_SN

      FROM TCO_CF_NBR

     WHERE NBR_ID = P_NBR_ID

       FOR UPDATE;

    

    V_NOW_SN := V_NOW_SN + 1;

    

    UPDATE TCO_CF_NBR

       SET NOW_SN = V_NOW_SN

     WHERE NBR_ID = P_NBR_ID;

    

    COMMIT;


    RETURN V_NOW_SN;

END;


위의 함수를 컴파일하면 다음과 같이 부적합한 식별자라고 오류가 발생됩니다.


ORA-06550: 줄 5, 열18:PL/SQL: ORA-00904: "P_NBR_ID": 부적합한 식별자

ORA-06550: 줄 2, 열2:PL/SQL: SQL Statement ignored

ORA-06550: 줄 8, 열2:PLS-00201: 'V_NOW_SN' 식별자가 정의되어야 합니다

ORA-06550: 줄 8, 열2:PL/SQL: Statement ignored

ORA-06550: 줄 12, 열18:PL/SQL: ORA-00904: "P_NBR_ID": 부적합한 식별자

ORA-06550: 줄 10, 열2:PL/SQL: SQL Statement ignored

ORA-06550: 줄 16, 열2:PLS-00372: 프로시저, RETURN 문에 이 식을 나타날 수 없습니다

ORA-06550: 줄 16, 열2:PL/SQL: Statement ignored


procedure로 변경해 보아도 동일한 오류가 발생하며,

procedure에서는 PRAGMA AUTONOMOUS_TRANSACTION; 문장만 제외하면 잘 동작하고 있습니다.


참고로 Database 환경은 다음과 같습니다.

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

PL/SQL Release 11.2.0.1.0 - Production


여러곳을 검색해 보아도 문제점을 찾을 수가 없어서 문의 드립니다.

감사합니다.

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

1. 저는 컴파일 잘 되네요.

- 사용하는 툴에 문제가 없는지? 살펴보세요.

- 오타는 없는지? 살펴보세요.

2. NVL 사용 부분 고치셔야 합니다.

- 조건에 맞는 자료가 없으면 NVL 을 타지 않고 오류가 납니다. NO_DATA_FOUND

- 변경전 :  SELECT NVL(NOW_SN, 0)

- 변경후 :  SELECT NVL(MAX(NOW_SN), 0)

마농(manon94)님이 2024-01-31 13:39에 작성한 댓글입니다.
이 댓글은 2024-01-31 14:03에 마지막으로 수정되었습니다.

제가 사용하는 tool의 사용법에 문제가 좀 있었네요..

잘 생성되었습니다.


감사합니다~~

최준영님이 2024-01-31 14:27에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
41985이번에도 쿼리 좀 도와 주세요. [1]
서주희
2024-02-26
227
41983쿼리 좀 도와주셔요.. [2]
서주희
2024-02-07
317
41982행의 값을 순차 차감하고 싶어요~ [1]
쿼리공부
2024-02-05
256
41981function에서 autonomous_transaction 사용 문의 [2]
최준영
2024-01-31
255
41980시간 간격에 중복되는 시간 찾기 (고수님들 도와주세요~) [1]
초보
2024-01-25
323
41979DBMS_SCHEDULER 잡 실행주기를 종료하면 바로 실행시킬수 있나요 ? [1]
이규동
2024-01-19
378
41978이력내용을 엑셀로 출력하는 쿼리 문의드립니다 [3]
고래
2023-11-28
923
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다