DmFM
Junior Member / Новичок
Участник № / Member № 6479
отправлено / posted
Написал хранимую функцию возвращающую VARCHAR в MSSQL. Попытался вызвать ее через SQLQuery, аргумент не получил результат. Пробовал выполнять запрос в форме редактирования запроса (нажал на красного человечка) то же безрезультатно.
Ваши запросы работать не будут как минимум из-за отсутствия FROM. Наш парсер ищет столбцы для выборки, опираясь на SELECT и FROM. Т.е. выборка - это выборка, а не способ вызова некоего кода.
отправлено / posted
Можно посмотреть в протоколе трассировщика ODBC-драйвера, что он принял от нашего SQL-запроса и что вернул.
Сообщения / Posts 17336 | Из / From: Россия
| IP / IP: IP адрес / IP address |
DmFM
Junior Member / Новичок
Участник № / Member № 6479
отправлено / posted
Теоретически два запроса из последнего поста должны выполняться и записывать данные в аргумент?
Сообщения / Posts 10 | Из / From: РФ
| IP / IP: IP адрес / IP address |
отправлено / posted
Теоретически оба запроса должны работать.
Конкретно надо исследовать протокол трассировщика ODBC-драйвера, чтобы увидеть, что трассировщик получил от Trace Mode 6, какие ошибки обнаружил и что выдал в ответ.
Сообщения / Posts 17336 | Из / From: Россия
| IP / IP: IP адрес / IP address |
DmFM
Junior Member / Новичок
Участник № / Member № 6479
отправлено / posted
code:
SELECT TOP 1 dbo.Test() #ARG_001# FROM Orders
Если в функция Test() возвращает короткую строку (порядка 15 символов), значение присваивается аргументу. Если длинную , то нет. Аргумент привязан к Комметарию канала.
code:
SELECT field1+field2 #ARG_001# FROM Table
field1, field2 - строки
Выполняю запрос из браузера запросов, нажимаю на кнопку с человечком. В результате запрос выполняется корректно, но в аргумент значение не записывается. Судя по всему ODBC отрабатывает корректно.
отправлено / posted
При выполнении запроса из браузера запросов в аргументы ничего не должно поступать. Надо сохранить проект под МРВ и запустить узел под профайлером. Активировать запрос в реальном времени и смотреть результат в аргументах канала CALL.SQL.
В первом запросе Вы смотрели по трассировщику, сколько символов с строке возвращает ODBC-драйвер?
DmFM
Junior Member / Новичок
Участник № / Member № 6479
отправлено / posted
quote:Отправитель / Originally posted by AdAstra Technical Support: При выполнении запроса из браузера запросов в аргументы ничего не должно поступать. Надо сохранить проект под МРВ и запустить узел под профайлером. Активировать запрос в реальном времени и смотреть результат в аргументах канала CALL.SQL.
В браузере запросов внизу есть поле. После выполнения запроса там появлюется результат. В случае, если там написано (пишу по памяти) что-то вроде
code:
ARG_00=Результат выборки
то в ARG_00 передана строка "Результат выборки". Если написано
code:
=Результат выборки
то строка "Результат выборки" в аргумент не передается. Вчера много эксперементировал, такая ситуация часто наблюдалась.
Количество записей во втором запросе не припомню, штук 5 может быть.
quote: В первом запросе Вы смотрели по трассировщику, сколько символов с строке возвращает ODBC-драйвер?
Лог трассировщика особо не разглядывал. К сожалению под рукой нет омпьютера с TM6. Проверить не могу.
Сообщения / Posts 10 | Из / From: РФ
| IP / IP: IP адрес / IP address |
отправлено / posted
Проверять надо в реальном времени под управлением профайлера и обязательно анализировать протокол трассировщика. Если в запросе возвращается несколько строк, то в аргументах CALL.SQL будут дынные только последней из записей.
Сообщения / Posts 17336 | Из / From: Россия
| IP / IP: IP адрес / IP address |