Форум 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) » SELECT функиця_mysql

   
Автор / Author Тема / Topic: SELECT функиця_mysql
FiXiZ
Active Forum Member / Активный участник форума
Участник № / Member № 5069


Icon 1 отправлено / posted      Профиль для / Profile for FiXiZ           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Здравствуйте!

Пытаюсь получить значение из функции mysql, не получается. Причем в трассировке ODBC вообще ничего нет. Порыскал по форуму, наткнулся на пост от 2008 года с хранимыми процедурами, там говорится что возвращать значения нельзя, можно только передавать в базу. Передача у меня работает, а возврат не хочет. Хотелось бы уточнить ситуацию, с 2008 года были изменения в данном вопросе?

Сообщения / Posts 70 | Из / From: Russia  |  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-драйвера настораживает.
Это касается только MySQL или MS Access тоже?
Пришлите, пожалуйста, Ваш тест-проект с БД (лучше с MS Access).

Сообщения / Posts 15201 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
FiXiZ
Active Forum Member / Активный участник форума
Участник № / Member № 5069


Icon 1 отправлено / posted      Профиль для / Profile for FiXiZ           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
отправил
Сообщения / Posts 70 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
FiXiZ
Active Forum Member / Активный участник форума
Участник № / Member № 5069


Icon 1 отправлено / posted      Профиль для / Profile for FiXiZ           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Уважаемая Техподдержка, отправлял проект на hotline3@adastra.ru в пятницу. Вы получили его?
Сообщения / Posts 70 | Из / From: Russia  |  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 
Проект передан на анализ программистам.
Мы ответим Вам почтой по результату.

Сообщения / Posts 15201 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
FiXiZ
Active Forum Member / Активный участник форума
Участник № / Member № 5069


Icon 1 отправлено / posted      Профиль для / Profile for FiXiZ           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
В результате было выяснено, что функции отрабатывают, но только с одним аргументом. И тут возникла еще проблема. При жестко указанном аргументе функция отрабатывает корректно:"SELECT Vh1_func(4345.46) #V1тар_In#
FROM data WHERE param_id = 5341 ORDER BY time DESC LIMIT 1;" Однако когда подставляю переменную, запрос перестает отрабатывать: "SELECT Vh1_func( #ST5_BARS1_H_гот_R# ) #V1тар_In#
FROM data WHERE param_id = 5341 ORDER BY time DESC LIMIT 1;". Причем тип переменной роли не играет, функции приведения типов mysql не помогают. С трассировко

Сообщения / Posts 70 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
FiXiZ
Active Forum Member / Активный участник форума
Участник № / Member № 5069


Icon 1 отправлено / posted      Профиль для / Profile for FiXiZ           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
В результате было выяснено, что функции отрабатывают, но только с одним аргументом. И тут возникла еще проблема. При жестко указанном аргументе функция отрабатывает корректно:"SELECT Vh1_func(4345.46) #V1тар_In# FROM data WHERE param_id = 5341 ORDER BY time DESC LIMIT 1;" Однако когда подставляю переменную, запрос перестает отрабатывать: "SELECT Vh1_func( #ST5_BARS1_H_гот_R# ) #V1тар_In# FROM data WHERE param_id = 5341 ORDER BY time DESC LIMIT 1;". Причем тип переменной роли не играет, функции приведения типов mysql не помогают. С трассировкой под вин7 пока проблемы (лог не пишется почему-то), позже попробую на XP. релиз 6.08
Сообщения / Posts 70 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
FiXiZ
Active Forum Member / Активный участник форума
Участник № / Member № 5069


Icon 1 отправлено / posted      Профиль для / Profile for FiXiZ           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
ac0-894 EXIT SQLExecDirectW with return code -1 (SQL_ERROR)
HSTMT 01B217F8
WCHAR * 0x0F149C58 [ 78] "SELECT Vh1_func() FROM data WHERE param_id = 5341 ORDER BY time DESC LIMIT 1;"
SDWORD 78

DIAG [S1000] [MySQL][ODBC 3.51 Driver][mysqld-5.1.53]Incorrect number of arguments for FUNCTION nikooil.Vh1_func; expected 1, got 0 (1318)

Ну судя по всему он не видит значение аргумента #ST5_BARS1_H_гот_R#

Сообщения / Posts 70 | Из / From: Russia  |  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 
Существуют ограничения в использовании подстановок.
Согласно документации (см."Подстановки в SQL-запросе") две подстановки подряд использовать нельзя.
В данном случае ")" не является разделителем.

Сообщения / Posts 15201 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
FiXiZ
Active Forum Member / Активный участник форума
Участник № / Member № 5069


Icon 1 отправлено / posted      Профиль для / Profile for FiXiZ           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Попробовал использовать переменные mysql:
set @test1 := #test_R# ;
SELECT Vh1_func(@test1) #V1тар_In# FROM data WHERE param_id = 5341 ORDER BY time DESC LIMIT 1 ;
Одним запросом не пошло, выдал ошибку. В разбиении на 2 запроса ошибок не выдает. Но похоже что переменная @test1 обнуляется перед каждым запросом. Уважаемая Техподдержка, как я могу выполнить из mysql функцию с одним аргументом (DOUBLE) и принять результат (DOUBLE)? У меня уже нету времени гадать как обойти все запреты чтобы реализовать эту несложную задачу.

Сообщения / Posts 70 | Из / From: Russia  |  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 
Мы проверили разбор такого запроса на присланном Вами ранее проекте, заменив
set @test1 := #test_R# ;
на
set @test1 := #ДУУ1_R# ;

Запрос разбирается правильно и в функцию подставляется нужная величина.

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


Icon 1 отправлено / posted      Профиль для / Profile for RomanUI           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Как правильно использовать условия поиска? Создана таблица, в которой один столбец типа TEXT. К примеру в нём записываются фамилии. Как найти фамилии оканчивающиеся на "ов". Пробовал использовать операцию LIKE подобно как в MS Access вводил *ов, но ничего не возвращается. Жду ответа.
Сообщения / Posts 24 | Из / 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 
Если данная функция реализуема в SQL, то Вы можете попробовать использовать ее при создании запроса из нашей среды.
Сообщения / Posts 15201 | Из / From: Russia  |  IP / IP: IP адрес / IP address | Report this post to a Moderator
RomanUI
Junior Member / Новичок
Участник № / Member № 4022


Icon 1 отправлено / posted      Профиль для / Profile for RomanUI           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Таблица создана в MS Access и в ней можно производить поиск сочетанием "*ов". Но на запрос из среды trace mode нет ответа.Вот код:

SELECT BD.Фамилия #ARG_000#
FROM BD
WHERE BD.Фамилия LIKE #ARG_001#
ARG_000 и ARG_001 типа string. В ARG_001 помещается то, что нужно найти(тот же *ов)

Пожалуйста, подскажите что здесь не правильно или пришлите конкретный пример.

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


Icon 1 отправлено / posted      Профиль для / Profile for RomanUI           Редактировать/удалить сообщение / Edit/Delete Post   Вставить в ответ текст исходного сообщения  / Reply With Quote 
Я так и не получил ответа.
Сообщения / Posts 24 | Из / 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 
Мы не можем давать консультации по правильному написанию SQL-запросов.
Вам необходимо, используя любое SQL-приложение, написать запрос, используя логический оператор LIKE. Проверить корректность выполнения данного запроса и затем воспроизвести его в Шаблоне_связи_с_СУБД.

Сообщения / Posts 15201 | Из / 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