powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Ошибка вызова SP.
21 сообщений из 21, страница 1 из 1
Ошибка вызова SP.
    #32305687
vvHedgehog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеем вот такую SP (СУБД - InterBase 6.1 которая шла с Делфи 6)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE PROCEDURE  "GET_NAMEMENU"  
(   "ID"  INTEGER)
RETURNS
(   "NAME"  VARCHAR( 84 ) CHARACTER SET WIN1251)
AS
begin
  select NameMenu from Menu
  where idMenu=:id
  into :name;
end

Работаю с БД, которая содержит эту ХП через клиентскую программу написанную на Делфи 6. Если клиет работает на сервере, то все идет гладко.
Если работать с другой машины, то при выполнении накого вот кода вывыливается ошибка:
Код: plaintext
1.
2.
3.
4.
5.
function TDM1.Get_NameMenu(id: Integer): variant;
begin
  StpGet_NameMenu.ParamByName('id').AsInteger:=id;
  StpGet_NameMenu.ExecProc;//вылетает здесь с ошибкой - 804 
  result:=StpGet_NameMenu.ParamByName('name').Value;
end;


Причем 1 раз эта процедура выполняется нормально.
(804 - SQLDA отсутствует или неверное число/тип параметров)

Есть еще одна процедура. тоже 1 входной, другой выходной, так та вообще вылетает с исключением в модуле gdb32.dll....

Что не так и что такое SQLDA????
Заранее спасибо!
...
Рейтинг: 0 / 0
Ошибка вызова SP.
    #32305893
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не знаю в чём ошибка, но раз не работает - засунь вызов процедуры в обычный запрос и вызывай его в обычных компонентах типа TIBDataSet.
...
Рейтинг: 0 / 0
Ошибка вызова SP.
    #32305896
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, ещё в процедуре нужен SUSPEND !!!
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE PROCEDURE  "GET_NAMEMENU"  
(   "ID"  INTEGER)
RETURNS
(   "NAME"  VARCHAR( 84 ) CHARACTER SET WIN1251)
AS
begin
  select NameMenu from Menu
  where idMenu=:id
  into :name;
  SUSPEND;
end


И, если честно, смысла этой процедуры я не понимаю. Зачем она нужна?
...
Рейтинг: 0 / 0
Ошибка вызова SP.
    #32305923
vvHedgehog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может я тоже что-то непонимаю, но сделано это для ускорения/упрощения получения имени пункта меню по его ID...

Но все равно странно, что если клиент запущен на сервере таких ошибок не возникает....

Может действительно дело в суспенде... попробую.

а что такое SQLDA никто не знает?
...
Рейтинг: 0 / 0
Ошибка вызова SP.
    #32305937
vvHedgehog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще на счет суспенда :
в этой процедуре он тоже необходим?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CREATE PROCEDURE  "FIND_NAMEMENU"  
(   "ID"  INTEGER)
RETURNS
(   "NAME"  VARCHAR( 84 ) CHARACTER SET WIN1251)
AS
DECLARE VARIABLE SEC INTEGER;
begin
  select NameMenu,Section from Menu
  where idMenu=:id
  into :name,:sec;
  if (sec= 1 ) then name=null;
end
...
Рейтинг: 0 / 0
Ошибка вызова SP.
    #32305947
alex_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
везде где возвращается набор данных нужен suspend
в остальных случаях exit достаточно.
у тебяж ни того ни другого.
...
Рейтинг: 0 / 0
Ошибка вызова SP.
    #32305957
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что значит Exit достаточно? Он нужен только там, где нужен. Я его раза 3 использовал за всю жизнь, не больше...
...
Рейтинг: 0 / 0
Ошибка вызова SP.
    #32305964
vvHedgehog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Понятно. будем править почти все ХП.

Но все же! Почему работает на сервере????
...
Рейтинг: 0 / 0
Ошибка вызова SP.
    #32305971
vvHedgehog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
гхм... может я чего нетак написал, но у меня же не возвращается набор данных ни в первой ни во второй ХП. Возвращается 1 переменная типа строка....
...
Рейтинг: 0 / 0
Ошибка вызова SP.
    #32306003
alex_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1 переменная типа строка это и есть набор данных

2gold
может быть. просто както гдето читал что процедура должна заканчиваться exitом. вот я их и заканчиваю екситом чё мне жалко чтоли?

кста народ, а где на клавиатуре буква ё? чета найти не могу
...
Рейтинг: 0 / 0
Ошибка вызова SP.
    #32306008
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ё под ESCAPE (на клавиатуре QWERTY). На других не помню...
...
Рейтинг: 0 / 0
Ошибка вызова SP.
    #32306011
vvHedgehog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 :Alex_k

ё над табом там где на англицкой раскладке ~
Как же ты её вставил в текст если найти не смог?!
...
Рейтинг: 0 / 0
Ошибка вызова SP.
    #32306020
alex_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
:-)
мы долго ржали
этож старый прикол :-)
...
Рейтинг: 0 / 0
Ошибка вызова SP.
    #32306026
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А чё, букву то вставить можно из таблицы символов, а вот если в командировку в Зимбабве поехать, к примеру, и там клава не обычная - можно долго буквы искать
...
Рейтинг: 0 / 0
Ошибка вызова SP.
    #32306046
vvHedgehog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Просто на простые вопросы и ответить приятно!

Это даже способ сменить тему, чтоб никому обидно не было ;)

Кстати... если клава из Зимбабве, то можно так:
зажимаешь <ALT>
на доп цифр клаве набираешь 240
отпускаешь <ALT>
маленькая ё - 241.

В принципе это тож стары прикол, его все знают....

ЗЫ: Может я повторюсь, но у меня осталось 2 вопроса
1) что такое SQLDA
2)почему такая байда работает на сервере, и хотя бы 1 раз на клиенте?
...
Рейтинг: 0 / 0
Ошибка вызова SP.
    #32306070
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) The XSQLDA is a host-language data structure that DSQL uses to transport data to or from
a database when processing an SQL statement string. There are two types of XSQLDAs:
input descriptors and output descriptors. Both input and output descriptors are
implemented using the XSQLDA structure.

Обычному смертному это не нужно.

2) Не знаю.
...
Рейтинг: 0 / 0
Ошибка вызова SP.
    #32306095
vvHedgehog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Чтож...
спасибо всем!
...
Рейтинг: 0 / 0
Ошибка вызова SP.
    #32306699
vvHedgehog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Такс.... рано радовался!!!!

Тема не закрыта. суспенд помог наполовину!
в самой первой ХП все еще выскакивает ошибка-804.

Зато второй более страшный сбой похоже больше не появляется...

Итак : что не так в ХП
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CREATE PROCEDURE  "GET_NAMEMENU"  
(   "ID"  INTEGER)
RETURNS
(   "NAME"  VARCHAR( 84 ) CHARACTER SET WIN1251)
AS
begin
  select NameMenu from Menu
  where idMenu=:id
  into :name;
  suspend;
end


вызов в Д 6 :
Код: plaintext
1.
2.
3.
4.
5.
6.
function TDM1.Get_NameMenu(id: Integer): variant;
begin
  StpGet_NameMenu.ParamByName('id').AsInteger:=id;
  StpGet_NameMenu.ExecProc;//вылетает здесь с ошибкой - 804 
  result:=StpGet_NameMenu.ParamByName('name').Value;
end;
...
Рейтинг: 0 / 0
Ошибка вызова SP.
    #32306772
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделай через обычный SELECT, я ж тебе говорил...
...
Рейтинг: 0 / 0
Ошибка вызова SP.
    #32306789
vvHedgehog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я помню. говорил. Но через селект долго и не красиво. Мне нужно по ид быстренько схавать одно имя и все.... только на чтение, в редкие промежутки времени, когда пользователь шагнул по дереву вниз или вверх.
Мне кажется здесь какой-то баг сетевых драйверов IB6. Работает же локально!
фиг знает.... вощем может мне отдельную транзакцию для таких вызовов выделить....
Мож я вообще, ничего не понимаю.....
...
Рейтинг: 0 / 0
Ошибка вызова SP.
    #32341162
vvHedgehog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может я тормоз, простите. Но я раскопал причину ошибки на сайте ibase.ru
http://ibase.ru/devinfo/ibstp.htm
Там как раз говорится что уважаемый Gold был прав. ХП интербейза надо вызывать чезез селект. Вот. Еще раз спасибо за внимание.
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Ошибка вызова SP.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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