Форум TRACE MODE: техническая поддержка Послать новую тему / Post New Topic  Послать ответ / Post A Reply
мой профиль / my profile авторизация / login | регистрация / register | поиск / search | часто задаваемые вопросы / faq | начало / forum home

  Следующая старая тема / next oldest topic   Следующая новая тема / next newest topic
» Форум TRACE MODE: техническая поддержка » ТЕХНИЧЕСКАЯ ПОДДЕРЖКА / TECHNICAL SUPPORT TRACE MODE 6 » Работа с приложениями (ODBC-SQL/OPC/DDE) » Вызов функций MSSQL

   
Автор / Author Тема / Topic: Вызов функций MSSQL
DmFM
Junior Member / Новичок
Участник № / Member № 6479


Icon 1 отправлено / posted      Профиль для / Profile for DmFM           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Написал хранимую функцию возвращающую VARCHAR в MSSQL. Попытался вызвать ее через SQLQuery, аргумент не получил результат. Пробовал выполнять запрос в форме редактирования запроса (нажал на красного человечка) то же безрезультатно.

Запрос такой:
code:
 
SELECT dbo.Test() #ARG_001#

Делал еще так:
code:
 
SELECT GETDATE() #ARG_001#

Это должно работать?


Извиняюсь я не в ту ветку запостил. Надобы в "Работа с приложениями (ODBC-SQL/OPC/DDE) ".

Сообщения / Posts 10 | Из / From: РФ  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
AdAstra Technical Support
Moderator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for AdAstra Technical Support           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Вопросы об использовании хранимых процедур неоднократно обсуждались в форуме (например, http://forum.adastra.ru/ultimatebb.php/ubb/get_topic/f/41/t/000079.html#000000 и др.).

Ваши запросы работать не будут как минимум из-за отсутствия FROM. Наш парсер ищет столбцы для выборки, опираясь на SELECT и FROM. Т.е. выборка - это выборка, а не способ вызова некоего кода.

Возможные ошибки в реализации SQL-запроса должны быть отмечены в трассировщике ODBC-драйвера.

Сообщения / Posts 15120 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
DmFM
Junior Member / Новичок
Участник № / Member № 6479


Icon 1 отправлено / posted      Профиль для / Profile for DmFM           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Т.е. вот такая структура должна работать
code:
 SELECT TOP 1 dbo.Test() #ARG_001# FROM Orders 

Orders - Таблица такая есть

Забыл еще один эксперимент описать с которого все и началось

code:
 
SELECT field1+field2 #ARG_001#,
field3+field4 #ARG_002#
FROM Table

Такой запрос не записал данные в аргументы
Сообщения / Posts 10 | Из / From: РФ  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
AdAstra Technical Support
Moderator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for AdAstra Technical Support           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Можно посмотреть в протоколе трассировщика ODBC-драйвера, что он принял от нашего SQL-запроса и что вернул.
Сообщения / Posts 15120 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
DmFM
Junior Member / Новичок
Участник № / Member № 6479


Icon 1 отправлено / posted      Профиль для / Profile for DmFM           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Теоретически два запроса из последнего поста должны выполняться и записывать данные в аргумент?
Сообщения / Posts 10 | Из / From: РФ  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
AdAstra Technical Support
Moderator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for AdAstra Technical Support           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Теоретически оба запроса должны работать.

Конкретно надо исследовать протокол трассировщика ODBC-драйвера, чтобы увидеть, что трассировщик получил от Trace Mode 6, какие ошибки обнаружил и что выдал в ответ.

Сообщения / Posts 15120 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
DmFM
Junior Member / Новичок
Участник № / Member № 6479


Icon 1 отправлено / posted      Профиль для / Profile for DmFM           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
code:
 
SELECT TOP 1 dbo.Test() #ARG_001# FROM Orders

Если в функция Test() возвращает короткую строку (порядка 15 символов), значение присваивается аргументу. Если длинную , то нет. Аргумент привязан к Комметарию канала.

code:
SELECT field1+field2  #ARG_001#
FROM Table

field1, field2 - строки

Выполняю запрос из браузера запросов, нажимаю на кнопку с человечком. В результате запрос выполняется корректно, но в аргумент значение не записывается.
Судя по всему ODBC отрабатывает корректно.


Во втором случае

Сообщения / Posts 10 | Из / From: РФ  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
AdAstra Technical Support
Moderator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for AdAstra Technical Support           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
При выполнении запроса из браузера запросов в аргументы ничего не должно поступать.
Надо сохранить проект под МРВ и запустить узел под профайлером.
Активировать запрос в реальном времени и смотреть результат в аргументах канала CALL.SQL.

В первом запросе Вы смотрели по трассировщику, сколько символов с строке возвращает ODBC-драйвер?

Сколько записей содержит таблица во втором запросе?

Сообщения / Posts 15120 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
DmFM
Junior Member / Новичок
Участник № / Member № 6479


Icon 1 отправлено / posted      Профиль для / Profile for DmFM           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
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 | Report this post to a Moderator
AdAstra Technical Support
Moderator
Участник № / Member № 4


Icon 1 отправлено / posted      Профиль для / Profile for AdAstra Technical Support           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Проверять надо в реальном времени под управлением профайлера и обязательно анализировать протокол трассировщика.
Если в запросе возвращается несколько строк, то в аргументах CALL.SQL будут дынные только последней из записей.

Сообщения / Posts 15120 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
   

Quick Reply
Сообщение / Message:

HTML код не разрешен. / HTML is not enabled.
UBB код разрешен. / UBB Code is enabled.

Значки Graemlins / Instant Graemlins
   


Послать новую тему / Post New Topic  Послать ответ / Post A Reply Закрыть тему / Close Topic   Feature Topic   Переместить топик / Move Topic   Удалить топик / Delete Topic Следующая старая тема / next oldest topic   Следующая новая тема / next newest topic
 - Printer-friendly view of this topic
Перейти к / Hop To


Новости АСУ ТП / News | SCADA / HMI | Обучение / Trainings | Свяжитесь с нами / Contact Us

Rambler's Top100 Rambler's Top100



Powered by Infopop Corporation
UBB.classic™ 6.7.2