Идентификатор приложения из db2 8.1.5 в Z / OS - PullRequest
0 голосов
/ 10 октября 2011

Я искал, как получить идентификатор приложения из db2 8.1.5 в Z / OS (удаленно). Я нашел эту ссылку: http://www.ibm.com/developerworks/data/library/techarticle/0302stolze/0302stolze.html

В этой ссылке сказано, что в db2 до 8.2 нет встроенной функции (application_id) для получения идентификатора приложения. Итак, я попробовал решение, указанное в этой ссылке. Но при попытке функции SQL в предыдущей ссылке зарегистрировать метод Java, db2 предупреждает меня следующим образом:

DB21034E Команда была обработана как оператор SQL, поскольку она не была допустимая команда процессора командной строки. Во время обработки SQL он вернул: SQL0104N Неожиданный токен "FENCED" был найден после "". ожидаемый токены могут включать: «ДЕТЕРМИНИСТИЧЕСКИЙ, ВАРИАНТ». 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 

Метод Java:

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."); 
           } 
       } 
     } 
}

Пожалуйста, помогите мне

Спасибо в адвенсе

Ответы [ 2 ]

0 голосов
/ 10 октября 2011

Согласно документации IBM для DB2 for z / OS версии 8 на CREATE FUNCTION, NOT FENCED не поддерживается. NOT FENCED поддерживается в DB2 Universal Database версии 8, как указано в документации CREATE FUNCTION. Попробуйте изменить NOT FENCED на FENCED.

0 голосов
/ 10 октября 2011

SQL104N означает, что ваш SQL-оператор неверен.

Для вызова внешней скалярной функции (я не уверен насчет z / OS) в случае db2luw вы можете использовать SQLJ.INSTALL_JAR, как показано ниже

CALL SQLJ.INSTALL_JAR('file:///C:/whitegladiolus.jar','MYJARX')

и см. Также http://publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp?topic=/com.ibm.db2.udb.doc/ad/r0006425.htm

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...