Как вызвать DB2 UDTF из VB.NET
Я пишу VB.Сетевое приложение, которому необходимо вызвать пользовательскую табличную функцию в DB2. UDTF DB2 корректно работает из запроса DB2, но я не могу понять, как его вызвать из VB.Net.
Я приложил текстовый документ ( HereIsTheCode.txt ) из числа VB.Net определение функции я написал для вызова UDTF и растрового изображения ( HereIsTheQuery.bmp ) UDTF как выполняемого из запроса DB2. Я разрабатываю бизнес-приложения, которые интегрируются как С MS/SQL, так и с IBM/DB2 в течение нескольких лет, но это первый раз, когда мне пришлось вызвать UDTF, и до сих пор: никакой радости.......
UDTF возвращает одну таблицу записей, из которой мне нужны два значения полей (Код ошибки и Errortext не)
В режиме отладки выполнение кода никогда не возвращается из строки myDB2DataReader = myDB2Command.Метода executereader
Что я уже пробовал:
Вот это самое VB.Net определение функции
Public Function PumpTransaction() As Boolean Dim thisResult As Boolean = True Status = 0 StatusMessage = "Success." Dim myDB2Connection As iDB2Connection Dim myDB2Command As iDB2Command Dim myDB2DataReader As iDB2DataReader 'Define the ODBC Connection string myDB2Connection = New iDB2Connection("DataSource=" & globalConnectionSelected & _ "; UserID=" & _ constAS400_UID & _ ";Password=" & _ constAS400_PWD) Dim myConnectionOpen As Boolean = False Try 'Open the Connection myDB2Connection.Open() myConnectionOpen = True Dim thisCommandString As String = " SELECT ERRORCODE, ERRORTEXT FROM TABLE(DPLIB06.SMBB(" thisCommandString += CoNo.ToString + ",'" + _CallerID.Trim.ToUpper + "','" + PartNo.Trim.ToUpper + "','" thisCommandString += LocFrom.Trim.ToUpper + "','" + LocTo.Trim.ToUpper + "'," + CStr(Qty) + ")) RESULTS" myDB2Command = New iDB2Command(thisCommandString, myDB2Connection) Dim myCommandString As String = myDB2Command.CommandText myDB2DataReader = myDB2Command.ExecuteReader If myDB2DataReader.HasRows Then myDB2DataReader.Read() End If myDB2DataReader.Close() Catch ex As Exception Status = -1 StatusMessage = String.Format("{0}: {1}", System.Reflection.MethodBase.GetCurrentMethod().Name, ex.Message) End Try If myConnectionOpen Then myDB2Connection.Close() End If End Function
Это запрос DB2, который успешно работает изнутри Клиентские решения IBM i Access - Запуск SQL скриптов возврат ERRORCODE = 0 и ERRORTEXT = "успех"
SELECT ERRORCODE, ERRORTEXT FROM TABLE(DPLIB06.SMBB(9,'SMBB_009','G1-515011','TESTENG','BFLSH',10)) RESULTS