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

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

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

Восстановить пароль

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 02.01.2010, 23:16   #1
alex_-87
Пользователь
 
Регистрация: 29.12.2009
Сообщений: 23
По умолчанию хранимая процедура(firebird)

у меня есть БД(firebird), помогите написать хранимую процедуру редактирования записи, и код в delphi при котором она будет вызываться...
alex_-87 вне форума
Старый 03.01.2010, 12:21   #2
Скандербег
Форумчанин
 
Регистрация: 04.04.2009
Сообщений: 438
По умолчанию

Запуск процедуры из приложения
Код:
    qrTemp.Close;
    qrTemp.Transaction.StartTransaction;
    try
      qrTemp.SQL.Text := 'EXECUTE PROCEDURE <proc_name> [(<праметры, если есть>)];';
      qrTemp.ExecSQL;
      qrTemp.Transaction.Commit;
    except
      qrTemp.Transaction.Rollback;
    end;
Где qrTemp Dataset (здесь TIBQuery).
А писать процедуру надо в IBExpert.
Скандербег вне форума
Старый 03.01.2010, 13:17   #3
alex_-87
Пользователь
 
Регистрация: 29.12.2009
Сообщений: 23
По умолчанию

CREATE OR ALTER PROCEDURE PR_INS (
par1 varchar(50),
par2 integer)
as
begin
insert into students(spid, sgrupa) values(ar1, ar2);
suspend;
end^
правильно?
alex_-87 вне форума
Старый 03.01.2010, 13:20   #4
alex_-87
Пользователь
 
Регистрация: 29.12.2009
Сообщений: 23
По умолчанию

и тогда оно будет выглядить так....
qrTemp.Close;
qrTemp.Transaction.StartTransaction ;
try
qrTemp.SQL.Text := 'EXECUTE PROCEDURE pr_ins (ar1,ar2);';
qrTemp.parambyname('par1').Value:=e dit1.text;
qrTemp.parambyname('par2').value:=s trtoint(edit2.text);
qrTemp.ExecSQL;
qrTemp.Transaction.Commit;
except
qrTemp.Transaction.Rollback;
end;
да?
alex_-87 вне форума
Старый 03.01.2010, 14:14   #5
Скандербег
Форумчанин
 
Регистрация: 04.04.2009
Сообщений: 438
По умолчанию

Не совсем. Параметры в самом Dataset к процедуре не имеют никакого отношения.
Код:
qrTemp.SQL.Text := 'EXECUTE PROCEDURE pr_ins ('+QuotedStr(edit1.text)+','+edit2.text+');';
//qrTemp.parambyname('par1').Value:=edit1.text;
//qrTemp.parambyname('par2').value:=strtoint(edit2.text);
Первый параметр строка - в кавычках, второй целое - без кавычек.
Создавать или менять процедуру при работе приложения - не совсем хорошее решение и применяется редко. Ее надо создать один раз, а из приложения только запускать.
Скандербег вне форума
Старый 03.01.2010, 14:38   #6
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Странно, почему никто не использует специализированный компонент...
Пример:
Код:
IBStoredProc1.UnPrepare;
IBStoredProc1.StoredProcName:='PADDNUMBERUPD';
IBStoredProc1.Prepare;
IBStoredProc1.ParamByName('NUM').Value:=100;
IBStoredProc1.ParamByName('NUMB').Value:=15;
IBStoredProc1.Prepare;
IBStoredProc1.ExecProc;
Пример текста ХП:
Код:
CREATE PROCEDURE PADDNUMBERUPD (
  NUM INTEGER,
  NUMB INTEGER
)  AS                
BEGIN
UPDATE TOVLIST SET NUMBER=:NUMB WHERE TMP=:NUM;
END

Последний раз редактировалось mihali4; 03.01.2010 в 14:43.
mihali4 вне форума
Старый 03.01.2010, 14:41   #7
alex_-87
Пользователь
 
Регистрация: 29.12.2009
Сообщений: 23
По умолчанию

спс, работает...
alex_-87 вне форума
Старый 03.01.2010, 14:46   #8
alex_-87
Пользователь
 
Регистрация: 29.12.2009
Сообщений: 23
По умолчанию

еще один такой вопросик: у меня таблица students дочерняя от grupa, как мне сделать что бы у меня был выпадающий список всех допустимых значений таблицы grupa?
alex_-87 вне форума
Старый 03.01.2010, 14:59   #9
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Одна тема - один вопрос.
Закрыто.
mihali4 вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Хранимая процедура на изменение. zajigateli SQL, базы данных 3 11.11.2009 15:56
вычисляемые столбцы/хранимая процедура kate158 БД в Delphi 12 25.05.2009 14:31
Хранимая процедура не работает! Только_Учусь SQL, базы данных 6 08.09.2008 09:22
Хранимая процедура. nimf БД в Delphi 2 22.04.2008 13:16
не работает хранимая процедура yulia БД в Delphi 11 28.05.2007 19:00