powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / BCB и получение RecordSet'а, возвращаемого SP by SQL-Links
8 сообщений из 8, страница 1 из 1
BCB и получение RecordSet'а, возвращаемого SP by SQL-Links
    #34392007
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот: решил еще и сюда запостить - мо, тут помогут... Бо Борманцы мовчать, як сало в посылке

select @@version
Adaptive Server Enterprise/12.5.1/EBF 11428/P/NT (IX86)/OS 4.0/ase1251/1823/32-bit/OPT/Wed Sep 17 11:10:54 2003

ЭстЪ SP
Код: plaintext
1.
2.
3.
4.
5.
create procedure SPSmth 
as 
begin 
  select * from TableSmth
end
И вот как теперь этот recordset получить посредством SQL-Links?
На
Код: plaintext
1.
2.
3.
4.
5.
Query1->SQL->Add("SPSmth");
||
Query1->SQL->Add("exec SPSmth");
||
Query1->SQL->Add("execute SPSmth");
(после Open() ) EDBEngineError
General SQL error.
ct_fetch(): user api layer: external error: This routine cannot be called because another command structure has results pending

На
Код: plaintext
1.
Query1->SQL->Add("call SPSmth");
при Open() EDBEngineError
General SQL error.
Stored procedure 'call' not found. Specify owner.objectname or use sp_help to check whether the object exists (sp_help may produce lots of output).

На
Код: plaintext
1.
Query1->SQL->Add("{call SPSmth}");
при Open() EDBEngineError
General SQL error.
Incorrect syntax near '{'.

Для чистоты эксперимента и совести, на характер проверил Ышо и
Код: plaintext
1.
Query1->SQL->Add("select * from SPSmth");
при Open() EDBEngineError
Table does not exist.
ct_cursor(CLOSE): user api layer: external error: A cursor must be opened before this command type can be initialized

Ляно... Попробуем заюзать TStoredProc... На
Код: plaintext
1.
StoredProc1->StoredProcName="SPSmth";
(после Open() ) EDBEngineError
General SQL error.
ct_fetch(): user api layer: external error: This routine cannot be called because another command structure has results pending

Если же делать StoredProc1->ExecProc() - ессесно ничего: ни ашипок, ни данных...

Ну и как сие заборотЪ? Или Борман, опять, обложался?
_________________
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
BCB и получение RecordSet'а, возвращаемого SP by SQL-Links
    #34392520
Фотография Dmitry.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в борланде не разбераюсь.
по sybase:

ошибка типа:
This routine cannot be called because another command structure has results pending

происходит если приходит резалт одного типа а пытаются забрать другой.

когда ты выполняешь процедуру типа:
exec SPSmth

сразу после выполнения процедуры приходит резалт типа CS_STATUS_RESULT
это есть return процедуры.

если return явно не написан - то это 0
--
думаю трабл именно в этом
...
Рейтинг: 0 / 0
BCB и получение RecordSet'а, возвращаемого SP by SQL-Links
    #34392575
moris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторошибка типа:
This routine cannot be called because another command structure has results pending

происходит если приходит резалт одного типа а пытаются забрать другой.

Не так. Эта ошибка, говорит только о том, что перед выполнением текущей команды, была выполнена предыдущая и результат от ее выполнения - не был обработан.

Касательно борланд-метода ExecProc, то вы не можете его использовать для получения result set
You can execute a stored procedure that does not return a result set by calling ExecProc.


И вообще какой интерфейс используется - BDE/ODBC или OLEDB ?
...
Рейтинг: 0 / 0
BCB и получение RecordSet'а, возвращаемого SP by SQL-Links
    #34392734
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
I'm so sorry...
Просто в дрозофиле было набросано все в кучу. А когда оставил только (за'rem'ив впереди идущие Query)
Код: plaintext
1.
2.
StoredProc1->StoredProcName="SPSmth";
StoredProc1->Open();
отработало как часики

100%-но
moris
перед выполнением текущей команды, была выполнена предыдущая и результат от ее выполнения - не был обработан

поскольку DBGrid'ы лежат на TabSheet'ах PageControl'а. А для неактивных - ничего не делается. Соответственно RecordSet от Query держал RecordSet от StoredProc.
moris
Касательно борланд-метода ExecProc, то вы не можете его использовать для получения result set
You can execute a stored procedure that does not return a result set by calling ExecProc.

Да в курсе я... То - от бессилия
и для полного перебора, так сказать, всевозможных вариантов...
moris
И вообще какой интерфейс используется - BDE/ODBC или OLEDB ?

BDE/ODBC
С OLEDB как раз проблем - никаких...
_________________
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
BCB и получение RecordSet'а, возвращаемого SP by SQL-Links
    #34392782
moris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторBDE/ODBC

И зачем вы разрабатываете новый код на основе BDE? BDE уже неподдерживается и последняя сертифицированная верися ASЕ кажется была 12.5.0. Как этот BDE будет работать на новых версиях ASE - не понятно. Вернее понятно - будут проблемы.... и никто их уже не исправит...
...
Рейтинг: 0 / 0
BCB и получение RecordSet'а, возвращаемого SP by SQL-Links
    #34393113
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
moris
зачем вы разрабатываете новый код на основе BDE

Та то дрозофила была... Так сказать, для проверки возможности получения RecordSet'а, возвращаемого SP by SQL-Links вообще как такового...
_________________
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
BCB и получение RecordSet'а, возвращаемого SP by SQL-Links
    #34393324
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ex_Soft пишет:

> И вот как теперь этот recordset получить посредством SQL-Links?
> На
>
> Query1->SQL->Add("SPSmth");
> ||
> Query1->SQL->Add("exec SPSmth");
> ||
> Query1->SQL->Add("execute SPSmth");
>
> (после *Open()*)
> EDBEngineError

Open всегда использует первыый (и единственный ) набор данных.
Для перехода к последующим наборам надо использовать аналог
ODBC-шного SQLMoreResults() . Я знаю, что он есть в IDAPI
и BDE, но он не поддерживается самим VCL. Да он и не нужен
VCL-ю, потому что не понятно, что VCL мог бы с ним сделать.

> Query1->SQL->Add("call SPSmth");
> при *Open()*
> EDBEngineError
>
> General SQL error.
> Stored procedure 'call' not found. Specify owner.objectname or use
> sp_help to check whether the object exists (sp_help may produce lots of
> output).
>
>
> На
>
> Query1->SQL->Add("{call SPSmth}");
> General SQL error.
> Incorrect syntax near '{'.
Это синтаксис ODBC. В BDE все по другому.

> Ляно... Попробуем заюзать TStoredProc... На
Вот это правильно. Но только он может вызывать
только одну процедуру, не несколько подряд.

> Если же делать *StoredProc1->ExecProc()* - ессесно ничего: ни ашипок, ни
> данных...

Правильно, ExecProc() не фетчить данные. Надо использовать Open, но
он не будет обрабатывать множественные наборы данных.

> Ну и как сие заборотЪ? Или Борман, опять, обложался?

Он всегда был этим славен :-)
У них всегда была только одна ошибка - в ДНК.


Короче, если хочешь использовать множественные наборы данных, забей на
BDE и используй не BDEшные компоненты доступа. И если хочешь
использовать множественные наборы, наверное придется забить и на
VCL-ные визуальные компоненты. Потому как они ничего сделать с
несколькими наборами не смогут. Но на чисто вызовах TDataSet можно
и получить данные и что-то даже с ними сделать.

К сожалению не знаю подробностей, потому что с дельфой уже давно
завязал, чего и всем желаю. Не люблю я ее...
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
BCB и получение RecordSet'а, возвращаемого SP by SQL-Links
    #34393462
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да весь этот менингит произрос из другого: ЭстЪ некая организация, которой поставила некая фирма ПО. В составе этого ПО ЭстЪ модуль который вытягивает по указанным в настройках командам через ODBC данные из БД. И вот он, вроде бы как, ниасилил SP, возвращающую RecordSet
Для того, что бы расставить все точки над i, необходима была дрозофила, которая через ODBC посредством нативного Sybase'вским драйвера этот RecordSet получала бы. Вот я и наваял ее быренько на стройке и VC++. И там и там - все сухо
Что и требовалось доказать. А с BDE связываться - Боже упаси
Правда у борманов и ADO с заморочками... Но это уже, как говориться, тема выходит за рамки данного форума...
_________________
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / BCB и получение RecordSet'а, возвращаемого SP by SQL-Links
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]