09.10.2007, 15:47 | #1 |
Участник
|
T-SQL UDF (User Defined Function) вызов и получение результата
Необходимо из Акса вызвать UDF и получить результат выполнения функции. Я предполагаю что это можно сделать через resultSet но как тогда получить результат?
|
|
09.10.2007, 16:03 | #2 |
SAP
|
если я правильно вас понял то вот
X++: #define.channel("Optimum") static void Optimum_ExportBalance(Args _args) { TranslationChannel translationChannel = TranslationChannel::find(#channel); CCADOConnection connection = new CCADOConnection(); CCADOCommand command = new CCADOCommand(); CCADORecordSet recordSet; ; try { connection.open(translationChannel.ADOConnectionString); command.activeConnection(connection); command.commandText(strfmt("DMT_Set_Balance '3077', '%1', 50000, 70000", date2str(systemdateget(),213,2,2,2,2,4))); recordSet = command.execute(); } catch(Exception::Error) { } } |
|
09.10.2007, 16:06 | #3 |
SAP
|
а самое главное забыл
X++: while (!recordSet.EOF()) { fields = recordSet.fields(); dateAttendance = fields.itemIdx(0).value(); // Дата визита recordSet.moveNext(); } |
|
09.10.2007, 16:12 | #4 |
Участник
|
UDF не возвращает recordSet
|
|
09.10.2007, 16:19 | #5 |
Участник
|
решил - используем обыкновенный recordSet и executeQuery('SELECT dbo.myFun()')
|
|
09.10.2007, 16:38 | #6 |
Участник
|
|
|
10.10.2007, 16:34 | #7 |
Участник
|
egorych куда UDF возвращает? UDF возвратит recordSet если сделать SELECT UDF()
|
|
10.10.2007, 17:23 | #8 |
Участник
|
Цитата:
Цитата из BOL Цитата:
Calling User-Defined Functions
When calling a scalar user-defined function, you must supply at least a two-part name: SELECT *, MyUser.MyScalarFunction()FROM MyTableTable-valued functions can be called by using a one-part name: SELECT *FROM MyTableFunction()However, when you call SQL Server built-in functions that return a table, you must add the prefix :: to the name of the function: SELECT * FROM ::fn_helpcollations() |
|
|
|