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
운영게시판
최근게시물
DB2 Q&A 713 게시물 읽기
No. 713
[DB2/AIX64]환경에서 SQL 프로시저를 작성했는데 에러가 발생합니다. SQLSTATE=42904
작성자
박정석(dochang)
작성일
2004-11-25 15:26ⓒ
2004-11-25 16:30ⓜ
조회수
8,239

아래와 같은 에러가 발생하는데 고수님들의 조언을 부탁드립니다.

 

[IBM][CLI Driver][DB2/AIX64] SQL7032N SQL 프로시저 "USP_FP_DSUM"이(가) 작성되지 않았습니다. 진단 파일은 "P5085795.log"입니다. SQLSTATE=42904

 

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

DB2 레지스트리 변수
1. DB2_SQLROUTINE_COMPILER_PATH가 C 컴파일러 환경을 설정하는 스크립트 또는 일괄처리 파일을 가리키도록 설정되어 있는지 확인하십시오

 

db2set "DB2_SQLROUTINE_COMPILE_COMMAND=xlc -H512 -T512 -I$HOME/sqllib/include SQLROUTINE_FILENAME.c -bE:SQLROUTINE_FILENAME.exp -e SQLROUTINE_ENTRY -o SQLROUTINE_FILENAME -L$HOME/sqllib/lib -lc -ldb2"

 

db2를 restart하신후..

 

2. $HOME/sqllib/function/routine아래의 path 이동하여 sr_cpath파일을 수정한다.

 

#!/bin/sh

PATH=$PATH:/usr/vac/bin

#PATH=$PATH:/usr/ibmcxx/bin

#PATH=$PATH:/usr/lpp/xlC/bin

export PATH

 

에서 xlc 실핼가능한 디렉토리 path 지정한다. 여기서는 /usr/vac/bin아래에 xlc 있습니다..

 

위의 SP환경을 설정한 후 다시 해보세요.. ^^

 

 

 

 

 

이종욱(nadaljw)님이 2004-11-26 14:09에 작성한 댓글입니다.

감사합니다.

덕분에 환경설정은 되었는데요...

스토어드 프로시져가 생성이 되었습니다.

 

몇가지 질문을 더 드립니다.

환경은

O/S : AIX

DB : DB2 V8.1 입니다. 

프로시져의 내용은 조건에 맞는 테이블에서 데이터를 쿼리하여

또 다른 테이블에 INSERT하는 간단한 프로시져입니다.

 

1. 생성된 프로시져를 어떻게 실행을 하나요..?

  오라클에서는 SQL>EXEC 프로시져명

   하면 되었는데....

 

2. 궁극적으로는 프로시져가  매일 또는 매시간 자동으로

   실행이 되어야합니다

   DB2에서 지원하는 스케줄링이 있는지... 있으면 어떻게 사용하는것  인지.. 없다면 CRON에 등록되어야 하는지...Shell 스크립트를 부탁드립니다.

박정석(dochang)님이 2004-11-30 14:13에 작성한 댓글입니다.

1.번에 대해서는 아시는데로,

  [sqc] 

   EXEC SQL

   CALL SP명 : SP(파라미터가 없는 것은 그냥 SP명만, 특정 파라미터에 값을 넘기지 않을때는 null로 적어주시면 됩니다

  [shell]

   db2 connect to dbname

   db2 "call  sp명"

   으로 호출하시면 됩니다.

2.번은 crontab을 편집해서 등록하셔할 듯 싶습니다.

           

배성수(Ultrazacos)님이 2004-12-01 17:41에 작성한 댓글입니다.

배성수(Ultrazacos)님께 감사의 말씀을 드립니다.

 

 

프로시져를 PC에 있는 DB2 명령행처리기에서 실행하면 아래와 같이

정상적으로 처리가 됩니다.

 

db2 => CONNECT TO TEC USER tec USING tec

   데이터베이스 연결 정보

 데이터베이스 서버                        = DB2/AIX64 8.1.5
 SQL 권한 부여 ID                         = TEC
 로컬 데이터베이스 별명                = TEC

db2 =>
db2 => call usp_perf_hsum

  리턴 상태 = 0

 

 

하지만 telnet으로 AIX 유닉스에 연결하여 실행하면 아래와 같이 실행은 하되

처리할 데이터가 없거나, 빈테이블이란 메세지가 나옵니다.

(처리할 데이터는 있습니다.)


 

dmssms:/usr/Tivoli/works/report>usp_perf_hsum.sh

   Database Connection Information

 Database server        = DB2/AIX64 8.1.5
 SQL authorization ID   = TEC
 Local database alias   = TEC

 

  Return Status = 0

 

SQL0100W  No row was found for FETCH, UPDATE or DELETE; or the result of a query is an empty table.  SQLSTATE=02000

 

아무래도 클라이언트에서 연결하여 처리하는것과

서버에서 직접 처리하는것에 차이가 있는것 같습니다.

해결책을 부탁드립니다.

박정석(dochang)님이 2004-12-02 13:36에 작성한 댓글입니다.

일단 서버에 직접접속해서 처리한 결과와 클라이언트에서 sp call하는 것과의 처리결과는 다를 수가 없습니다.

왜냐면 서버에 접속하는 점은 둘다 동일하기 때문입니다.

님께서 질문하신 내용중에

"프로시져의 내용은 조건에 맞는 테이블에서 데이터를 쿼리하여 

 또 다른 테이블에 INSERT하는 간단한 프로시져입니다 "

밑줄내용에 치중하셔서 Debugging해야 될 듯 싶은 감이 옵니다.

쿼리를 집적하셔서 결과가 나오는지.. 또 sp를 call할때는

결과가 원래 나올수 없는 param을 넘기셨는지 확인해 보시기 바랍니다.

 

배성수(Ultrazacos)님이 2004-12-03 09:53에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
716[IBM][CLI Driver] CLI0106E 연결이 닫혔습니다. SQLSTATE=08003 에러납니다.. [1]
홍정우
2004-11-30
6736
715이종욱(nadaljw)님께 감사드리며 DB2에 프로시져 자동실행기능이 있는지요? [1]
박정석
2004-11-30
5758
714export select 문 결과에서 delimeter를 없이 파일을 만드는 방법질문이요... [1]
초초보
2004-11-26
6172
713[DB2/AIX64]환경에서 SQL 프로시저를 작성했는데 에러가 발생합니다. SQLSTATE=42904 [5]
박정석
2004-11-25
8239
712vb+db2 한글깨짐현상 [1]
김주영
2004-11-24
8492
711db2에서 새로운 유저를 등록? [1]
초보개발자
2004-11-17
7572
710Online Backup? Offline Backup? [1]
조봉조
2004-11-16
6757
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.020초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다