Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.05.2007, 19:05   #1
yulia
Форумчанин
 
Аватар для yulia
 
Регистрация: 24.03.2007
Сообщений: 314
По умолчанию не работает хранимая процедура

SET TERM !! ;
CREATE PROCEDURE find_children (lastname varchar(30))
RETURNS (idchild integer, lastname varchar(30), age integer, tall integer, weight integer,
gibkost integer, plastika integer, jump integer, sluh integer, idteacher integer)
AS
BEGIN
SELECT idchild, lastname, age, tall, weight, gibkost, plastika, jump, sluh, idteacher
FROM children
WHERE lastname=:lastname
into :idchild, :lastname, :age, :tall, :weight, :gibkost, lastika, :jump,
:sluh, :idteacher;
SUSPEND;
END !!
SET TERM ; !!


Почему оно не работает? Оно мне пишет кучу страшніх слов:
Unsuccessful metadata update
STORE RDB$PROCEDURE_PARAMETERS failed
attempt to store duplicate value (visible to active transactions) in unique index "RDB$INDEX_18"

БД - Interbase
yulia вне форума Ответить с цитированием
Старый 27.05.2007, 19:13   #2
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

он тебе пишет что у тебя два lastname (один на входе, другой на выходе). или переименуй или подумай, а нужно ли это поле возвращать?
pu4koff вне форума Ответить с цитированием
Старый 27.05.2007, 19:47   #3
yulia
Форумчанин
 
Аватар для yulia
 
Регистрация: 24.03.2007
Сообщений: 314
По умолчанию

Цитата:
Сообщение от pu4koff Посмотреть сообщение
он тебе пишет что у тебя два lastname (один на входе, другой на выходе). или переименуй или подумай, а нужно ли это поле возвращать?
Да, вы правы, когда я убрала его из списка возвращения, то материться перестало, но желательно его все-таки возвращать... А если я переименовываю его на входе, то пишет про неизвестный столбец.... Как правильно переименовать? Или это в БД надо делать?
yulia вне форума Ответить с цитированием
Старый 27.05.2007, 21:21   #4
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

если на входе переименуешь, то надо тут поменять: WHERE lastname=:<НовоеИмя>
pu4koff вне форума Ответить с цитированием
Старый 27.05.2007, 21:43   #5
yulia
Форумчанин
 
Аватар для yulia
 
Регистрация: 24.03.2007
Сообщений: 314
По умолчанию

SET TERM !! ;
alter PROCEDURE find_children (c_lastname varchar(30))
RETURNS (idchild integer, lastname varchar(30), age integer, tall integer, weight integer,
gibkost integer, plastika integer, jump integer, sluh integer, idteacher integer)
AS
BEGIN
SELECT idchild, lastname, age, tall, weight, gibkost, plastika, jump, sluh, idteacher
FROM children
WHERE lastname=:c_lastname
into :idchild, :lastname, :age, :tall, :weight, :gibkost, lastika, :jump,
:sluh, :idteacher;
SUSPEND;
END !!
SET TERM ; !!

Так теперь оно пишет:
No active connection
yulia вне форума Ответить с цитированием
Старый 27.05.2007, 21:45   #6
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

ну у тебя нет соединения с базой видимо
pu4koff вне форума Ответить с цитированием
Старый 27.05.2007, 22:36   #7
yulia
Форумчанин
 
Аватар для yulia
 
Регистрация: 24.03.2007
Сообщений: 314
По умолчанию

есть...точно
yulia вне форума Ответить с цитированием
Старый 28.05.2007, 07:20   #8
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

а почему, кстати SET TERM !! ; ? там же вроде надо SET TERM ^ ; хотя я в IBExpert сколько хранимок не писал, ни разу Set Term не юзал... и почему END !! ? мы же еще не вернули назад этот разделитель... А так ошибка вроде из-за соединения, т.е. из-за его отсутствия...
pu4koff вне форума Ответить с цитированием
Старый 28.05.2007, 13:10   #9
yulia
Форумчанин
 
Аватар для yulia
 
Регистрация: 24.03.2007
Сообщений: 314
По умолчанию

SET TERM !! ; = SET TERM ^ ; - это абсолютно не имеет значения. А END !! всегда ставиться вконце, т.к. мы написали SUSPEND, то значит процедура уже должна была выполниться и все вернуть
yulia вне форума Ответить с цитированием
Старый 28.05.2007, 16:08   #10
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

я говорил не про само наличие end, а о том, что после него !!, а не ;
ЗЫ. просто не знаю че за хрень, вот и придираюсь ко всему подряд
pu4koff вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Хранимая процедура не работает! Только_Учусь SQL, базы данных 6 08.09.2008 09:22
Процедура не работает Михаил Юрьевич Общие вопросы Delphi 4 03.06.2008 07:22
Хранимая процедура. nimf БД в Delphi 2 22.04.2008 13:16
процедура Sergik1977 Паскаль, Turbo Pascal, PascalABC.NET 7 28.10.2007 16:36
FHandle - говорит что нет, хотя эта же процедура успешно работает в модуле Dialogs, о mrandrey Общие вопросы Delphi 2 08.06.2007 15:21