Старый 24.11.2005, 11:33   #31   
Форумец
 
Аватар для SvLite
 
Сообщений: 528
Регистрация: 29.09.2004
Возраст: 49

SvLite вне форума Не в сети
zss_vrn проблема в том, что пробовали по разному, а результат один. Попробовал "select * from sp_test(5)" в MySQL, такого нельзя сделать ошибка синтаксиса.

У меня вопрос Вы на Сях или Делфи все экспериментируете, просто как я понял в Си все работает замечательно, а на Делфи проблемы.
  Ответить с цитированием
Старый 24.11.2005, 11:46   #32   
Форумец
 
Аватар для SvLite
 
Сообщений: 528
Регистрация: 29.09.2004
Возраст: 49

SvLite вне форума Не в сети
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
 
Аватар для maximn
 
Сообщений: 5,240
Регистрация: 16.11.2003
Возраст: 24

maximn вне форума Не в сети
Цитата:
Сообщение от SvLite
maximn
select id_row as int_prm, prm_name as txt_prm from tbl_test where id_row=100;
...
ВОПРОС как вызвать ее из под Делфей? Хотя бы общее направление, т.к. исходя из того, что соединение установлено, а простым селектом (select * from tbl_test) можно вернуть значение.
я не знаю как она у тебя возвращает рекордсет в консоли (в какой именно консоли...?). это "процедура", она может что-то вернуть только через параметры. rtfm

насчет вот этого: "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   
Форумец
 
Аватар для zss_vrn
 
Сообщений: 2,045
Регистрация: 27.08.2003

zss_vrn вне форума Не в сети
SvLite
На CBuilder6 это все. Сомнительно, чтобы на дельфях были проблемы, когда на С их нет, скорее, наоборот - что хорошо работает в дельфях иногда не совсем хорошо в билдере. В дельфях не силен

А какие ошибки-то?

Если не обижу - советы:
Я бы по-частям делал - сначала попробовал простую процедуру, без параметров, но с возвращаемым курсором. Кстати, если возвращать из процедуры курсор в визуальный элемент, например, в грид, то без промежуточного ClientDataSet не обойтись, потому что курсор возвращается однонаправленный. Поэтому сначала советую все обкатать без вывода на экран, а в простой связке - Connection - StoredProc, добившись сначала безошибочного выполнения самого запроса.

И я не знаю совсем MySQL - вообще легально ли делать вызов через call, если нужен курсор? В других субд для получения курсора используется SELECT, а Exexute (call) - для вызова без получения курсора.

И вообще можно ли получить курсор в MySQL, используя процедуру?
  Ответить с цитированием
Старый 24.11.2005, 12:59   #35   
Форумец
 
Аватар для SvLite
 
Сообщений: 528
Регистрация: 29.09.2004
Возраст: 49

SvLite вне форума Не в сети
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, 07:32   #36   
Форумец
 
Аватар для zss_vrn
 
Сообщений: 2,045
Регистрация: 27.08.2003

zss_vrn вне форума Не в сети
SvLite
А что у тебя в параметре StoredProcName объекта SQLStoredProc? И пробовал ли ты вместо Excec запускать Active = true?
  Ответить с цитированием
Старый 25.11.2005, 08:18   #37   
Форумец
 
Аватар для SvLite
 
Сообщений: 528
Регистрация: 29.09.2004
Возраст: 49

SvLite вне форума Не в сети
zss_vrn Спасибки, я тут с Делфийцами пообщался и пришли к выводу, что это драйвера под ODBC корявые, 3.51 - не понимают вызов хранимой, т.к. они только с MySQL 5.0 появились, а 5.0 alpha - просто еще корявые. Вот так, вопрос не в вызове процедуры, а в его возможности вызова. Но если кто узнает как вызвать, буду благодарен.
  Ответить с цитированием
Старый 26.11.2005, 08:42   #38   
error #65535
 
Аватар для maximn
 
Сообщений: 5,240
Регистрация: 16.11.2003
Возраст: 24

maximn вне форума Не в сети
Цитата:
Сообщение от SvLite
zss_vrn Спасибки, я тут с Делфийцами пообщался и пришли к выводу, что это драйвера под ODBC корявые, 3.51 - не понимают вызов хранимой, т.к. они только с MySQL 5.0 появились, а 5.0 alpha - просто еще корявые. Вот так, вопрос не в вызове процедуры, а в его возможности вызова. Но если кто узнает как вызвать, буду благодарен.
а-а-а-а

а сколько дней назад было сказано о возможности таких граблей? =)
  Ответить с цитированием
Старый 28.11.2005, 08:22   #39   
Форумец
 
Аватар для SvLite
 
Сообщений: 528
Регистрация: 29.09.2004
Возраст: 49

SvLite вне форума Не в сети
maximn Ну, либо я не внимательный, либо сори, но к такому выводу, я пришел 25 числа. Когда говорил с ребятами которые работали с БД на делфи, они сказали, что вызов я делаю правельно и будь это MSSQL, процедура вызывалась бы, а так "Пилите Шурочка, пилити, они золотые."
  Ответить с цитированием
Поиск в теме: 



Быстрый переход:

  Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Support by DrIQ & Netwind