Если это ваш первый визит, рекомендуем почитать справку по форуму. Для размещения своих сообщений необходимо зарегистрироваться. Для просмотра сообщений выберите раздел. |
Вопрос знатокам: MySQL(v4.0.18)+Delphi 7 |
Философия, технологии, алгоритмы! |
|
|
Опции темы |
24.11.2005, 11:33 | #31 |
Форумец
Сообщений: 528
Регистрация: 29.09.2004
Возраст: 49
Не в сети |
zss_vrn проблема в том, что пробовали по разному, а результат один. Попробовал "select * from sp_test(5)" в MySQL, такого нельзя сделать ошибка синтаксиса.
У меня вопрос Вы на Сях или Делфи все экспериментируете, просто как я понял в Си все работает замечательно, а на Делфи проблемы. |
24.11.2005, 11:46 | #32 |
Форумец
Сообщений: 528
Регистрация: 29.09.2004
Возраст: 49
Не в сети |
maximn
это тестовая хранимая процедура: DELIMITER $$ CREATE PROCEDURE `sp_test_1`(in pr int, inout idError char(100)) BEGIN declare tmp char(100); set tmp=''; while pr>0 do set tmp=CONCAT(tmp,cast(pr as char(2)),', '); set pr=pr-1; end while; set idError=tmp; select id_row as int_prm, prm_name as txt_prm from tbl_test where id_row=100; END $$ DELIMITER ; Это запрос из командной строки: call sp_test_1(1,@test); select @test; там все работает, я получаю и рекордсет и переменную, такой изврат нужен для того, что на серваке отслеживать ошибки и передавать различный результат в процедуру, а по внешней переменной определять что передано. ВОПРОС как вызвать ее из под Делфей? Хотя бы общее направление, т.к. исходя из того, что соединение установлено, а простым селектом (select * from tbl_test) можно вернуть значение. |
24.11.2005, 12:12 | #33 | |
error #65535
Сообщений: 5,240
Регистрация: 16.11.2003
Возраст: 24
Не в сети |
Цитата:
насчет вот этого: "select id_row as int_prm, prm_name as txt_prm from tbl_test where id_row=100;" - это совсем бред. куда ты это хочешь положить? это же не батник какой-нибудь, чтобы ты селект сделал а клиенту эхи пошли. rtfm вобщем выкинь эту строку, если не поможет - ищи на предмет обновления myODBC или компонент своих (повторюсь в делфях я не силен) |
|
24.11.2005, 12:30 | #34 |
Форумец
Сообщений: 2,045
Регистрация: 27.08.2003
Не в сети |
SvLite
На CBuilder6 это все. Сомнительно, чтобы на дельфях были проблемы, когда на С их нет, скорее, наоборот - что хорошо работает в дельфях иногда не совсем хорошо в билдере. В дельфях не силен А какие ошибки-то? Если не обижу - советы: Я бы по-частям делал - сначала попробовал простую процедуру, без параметров, но с возвращаемым курсором. Кстати, если возвращать из процедуры курсор в визуальный элемент, например, в грид, то без промежуточного ClientDataSet не обойтись, потому что курсор возвращается однонаправленный. Поэтому сначала советую все обкатать без вывода на экран, а в простой связке - Connection - StoredProc, добившись сначала безошибочного выполнения самого запроса. И я не знаю совсем MySQL - вообще легально ли делать вызов через call, если нужен курсор? В других субд для получения курсора используется SELECT, а Exexute (call) - для вызова без получения курсора. И вообще можно ли получить курсор в MySQL, используя процедуру? |
24.11.2005, 12:59 | #35 |
Форумец
Сообщений: 528
Регистрация: 29.09.2004
Возраст: 49
Не в сети |
to ALL Повторяю ЭТО ТЕСТОВЫЙ ОТЛАДОЧНЫЙ ПРИМЕР, я на нем пытаюся заставить работать, прогу, целесообразность только в том что он тестовый, в реальной проге будут совсем другие хранимки, но не в этом вопрос. вопрос в том, что получить селект в делфях я могу, а выполнить процедуру, пусть даже самую простую без параметров и не возвращающую результат, НЕТ.
maximn я запускаю mysql -u root -p ввожу пароль далее use test \. d:\script.sql - и все работает и набор записей и внешняя переменная возвращаются. d:\script.sql содержит текст:"call sp_test_1(1,@test); select @test;" и все. zss_vrn Ошибка все время одна, независимо от сложности процедуры. если коротко то звучит так "Ошибка синтаксиса в строке '{call sp_test('1')}', читайте мануал по MySQL", не считая фигурных скобок ошибки я не нахожу, вот отсюда и вопрос или эти скобки посылаются серверу, или надо копать. Хотелось у людей поспрошать встечались с этой проблемой или нет, но видать не встречались . |
25.11.2005, 08:18 | #37 |
Форумец
Сообщений: 528
Регистрация: 29.09.2004
Возраст: 49
Не в сети |
zss_vrn Спасибки, я тут с Делфийцами пообщался и пришли к выводу, что это драйвера под ODBC корявые, 3.51 - не понимают вызов хранимой, т.к. они только с MySQL 5.0 появились, а 5.0 alpha - просто еще корявые. Вот так, вопрос не в вызове процедуры, а в его возможности вызова. Но если кто узнает как вызвать, буду благодарен.
|
26.11.2005, 08:42 | #38 | |
error #65535
Сообщений: 5,240
Регистрация: 16.11.2003
Возраст: 24
Не в сети |
Цитата:
а сколько дней назад было сказано о возможности таких граблей? =) |
|
28.11.2005, 08:22 | #39 |
Форумец
Сообщений: 528
Регистрация: 29.09.2004
Возраст: 49
Не в сети |
maximn Ну, либо я не внимательный, либо сори, но к такому выводу, я пришел 25 числа. Когда говорил с ребятами которые работали с БД на делфи, они сказали, что вызов я делаю правельно и будь это MSSQL, процедура вызывалась бы, а так "Пилите Шурочка, пилити, они золотые."
|