IIB v10: передача локальной переменной в оператор выбора ESQL

Я новичок в IIB, пытаюсь подключиться к Oracle DB с помощью ESQL. Попытка передать локальный параметр в предложение where в простом операторе SELECT. Получение ниже ошибки при его выполнении. Может кто-нибудь мне помочь

ESQL:
    BROKER SCHEMA com.project


CREATE COMPUTE MODULE MainFlow_Compute
    CREATE FUNCTION Main() RETURNS BOOLEAN
    BEGIN
        DECLARE var REFERENCE TO Environment.Variables;
        DECLARE username CHAR;

        SET username = InputRoot.JSON.Data.userid;

        --SET OutputRoot.XML.Invoice[] = SELECT E.EMPLOYEE_ID,E.FIRST_NAME FROM Database.HR.EMPLOYEES AS E WHERE E.EMPLOYEE_ID=username;
        SET OutputRoot.XML.Invoice[] = PASSTHRU('SELECT E.EMPLOYEE_ID,E.FIRST_NAME FROM Database.HR.EMPLOYEES AS E WHERE E.EMPLOYEE_ID=?' VALUES(username));
        SET OutputRoot.JSON.Data.user_id=username;
        --SET OutputRoot.JSON.Data.user_name=var.profile.FIRST_NAME;        

        RETURN TRUE;
    END;
END MODULE;

Журнал:

Error: BIP3113E: Exception detected in message flow com.project.MainFlow
         http://localhost:7800/users/getUserDetails
         Exception. BIP2230E: Error detected whilst processing a message in node 'com.project.MainFlow.Compute'. : F:\build\slot2\S1000_P\src\DataFlowEngine\SQLNodeLibrary\ImbComputeNode.cpp: 515: ImbComputeNode::evaluate: ComIbmComputeNode: com/project/MainFlow#FCMComposite_1_4
BIP2488E:  ('com.project.MainFlow_Compute.Main', '14.4') Error detected while executing the SQL statement ''SET OutputRoot.XML.Invoice[] = DEFAULTPASSTHRU('SELECT E.EMPLOYEE_ID,E.FIRST_NAME FROM Database.HR.EMPLOYEES AS E WHERE E.EMPLOYEE_ID=?', username);''. : F:\build\slot2\S1000_P\src\DataFlowEngine\ImbRdl\ImbRdlStatementGroup.cpp: 767: SqlStatementGroup::execute: : 
BIP2321E: Database error: ODBC return code '-1' using ODBC driver manager ''odbc32.dll''. : F:\build\slot2\S1000_P\src\DataFlowEngine\MessageServices\ImbOdbc.cpp: 3814: ImbOdbcStatement::checkRcInner: : 
BIP2322E: Database error: SQL State ''IM001''; Native Error Code '0'; Error Text ''[Microsoft][ODBC Driver Manager] Driver does not support this function''. : F:\build\slot2\S1000_P\src\DataFlowEngine\MessageServices\ImbOdbc.cpp: 4035: ImbOdbcStatement::checkRcInner: :

Примечание. Я уже ссылался на ссылку ниже

IIB: передача локальной переменной оператору выбора ESQL


person Rama krishna    schedule 21.01.2019    source источник
comment
Итак, ваша ошибка - BIP2322E. Обратите внимание, что стек исключений и последний, который сообщает вам, что пошло не так, в некоторых случаях предпоследнее исключение может дать вам дополнительный контекст.   -  person TJA    schedule 23.01.2019
comment
Если вы выполняете поиск в Google, используя BIP2322, обратите внимание, что я пропустил последний символ, это, кажется, заставляет поиск работать немного лучше, я не знаю, почему как Google. Затем следует найти ссылку для BIP2000-2999: Компоненты среды выполнения - Брокер - IBM, откройте ее, найдите BIP2322 и прочитайте. Одна из рекомендаций — попробовать mqsicvp для подключения, поэтому попробуйте mqsicvp ‹YourBrokerName› -n ‹ODBCName›   -  person TJA    schedule 23.01.2019
comment
Спасибо за ваш ответ @TJA, оператор выполняет и извлекает данные из БД, если я передаю статическое значение, например E.EMPLOYEE_ID = 100. Но получаю эту ошибку при передаче только такого параметра, как E›EMPLOYEE_ID=userid. Я также пробовал использовать PASSTHRU. Я пробовал mqsicvp TESTNODE_USER -n ROUTING. Это показано ниже: BIP8270I: подключен к источнику данных «ROUTING» как пользователь «SYSTEM». Платформа источника данных — «Oracle», версия «11.02.0000 Oracle 11.2.0.1.0».   -  person Rama krishna    schedule 23.01.2019
comment
То есть буквально E.EMPLOYEE_ID = 100, а не E.EMPLOYEE_ID = '100', возможно, это какое-то преобразование значений. Столбец CHAR или какой-то NUMBER? Вы можете попробовать VALUES (имя пользователя CAST AS INTEGER). Или, если вы хотите просмотреть 1 МБ текста или около того, выполните трассировку mqsichangetrace, mqsireadlog, mqsiformatlog. Начните с -u для трассировки пользователя и -l debug и -r для сброса. Я всегда неохотно использую mqsichangetrace, но часто задаюсь вопросом, почему. Удачи.   -  person TJA    schedule 23.01.2019
comment
Итак, вы уже пытались сделать это без PASSTHRU и '?' ? Потому что я никогда не видел этот синтаксис для соединения odbc (обычно я делаю это с java, честно говоря, я никогда не пробовал с ESQL)   -  person jdel    schedule 30.01.2019