2011-10-10 3 views
0

Z/OS (리모트)의 db2 8.1.5에서 응용 프로그램 ID를 얻는 방법을 검색했습니다. http://www.ibm.com/developerworks/data/library/techarticle/0302stolze/0302stolze.htmlZ/OS에서 db2 8.1.5의 응용 프로그램 ID

이 링크에는 응용 프로그램 ID를 얻기 위해 8.2 이전의 db2에 내장 함수 (application_id)가 없다고합니다. 그래서, 나는이 링크에서 말한 해결책을 시도했다. 그러나 Java 메소드를 등록하기 위해 이전 링크에서 SQL 함수를 사용할 때 db2는 다음과 같이 경고합니다.

DB21034E 유효한 명령 행 처리기 명령이 이 아니기 때문에 명령문이 SQL 문으로 처리되었습니다. SQL 처리 중에 리턴되었습니다. SQL0104N ""다음에 예상치 못한 토큰 "FENCED"가 있습니다. 예상되는 토큰에는 "DETERMINISTIC, VARIANT"가 포함될 수 있습니다. SQLSTATE = 42601

기능은 내가 시도 :

CREATE FUNCTION application_id() 
    RETURNS VARCHAR(128) 
    SPECIFIC applId EXTERNAL NAME 'appl_id.getApplicationId' 
    NOT FENCED LANGUAGE JAVA PARAMETER STYLE DB2GENERAL 
DETERMINISTIC 
    NO SQL NO EXTERNAL ACTION ALLOW PARALLEL DBINFO 

자바 방법 :

import java.sql.*; 
import COM.ibm.db2.app.*; 

public class appl_id extends UDF 
{ 
    public void getApplicationId(String result) throws Exception 
    { 
     try { 
      // set the output parameter based on DBINFO 
      set(1, getDBapplid()); 
     } 
     catch (Exception e) { 
      setSQLstate("38XXX"); 
      if (e.getMessage().length() > 0) { 
       setSQLmessage("Exception '" + e.getMessage() + 
          "' encountered."); 
       } 
      else { 
       setSQLmessage("Exception '" + e.toString() + 
          "' encountered."); 
      } 
     } 
    } 
} 

나에게 advence에서

감사를 도와주세요

답변

0

참조 CREATE FUNCTION, NOT FENCED에있는 IBM z/OS 용 DB2 버전 8 문서는 지원되지 않습니다. NOT FENCED은 DB2 Universal Database 버전 8에서 설명 된대로 CREATE FUNCTION 문서에서 지원됩니다. NOT FENCEDFENCED으로 변경해보세요.

관련 문제