Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Не понятен принцып работы Stored Procedure. [D7, IB6.x]


Страницы:   1 2

Lucky_elf ©   (2004-01-24 14:32:00) 

У меня вот такая хранимая процедура:

CREATE PROCEDURE INSERT_KREDIT(
PEOPLE_SERNAME VARCHAR(30),
PEOPLE_NAME VARCHAR(20),
PEOPLE_PNAME VARCHAR(30))
RETURNS (
PEOPLE_ID INTEGER)
AS
DECLARE VARIABLE P_ID INTEGER;

BEGIN
FOR SELECT P.ID_PEOPLE
FROM T_PEOPLE P
WHERE (:PEOPLE_NAME = P.NAME)
AND (:PEOPLE_SERNAME = P.SERNAME)
AND (:PEOPLE_PNAME = P.PNAME)
INTO :PEOPLE_ID
DO
BEGIN
IF (:PEOPLE_ID IS NOT NULL) THEN SUSPEND;
END
END !!


дальше в Д7 я вставляю DBGrid связываю все как в случае c IBQuery и не какого результата, хотя процедура выполняется и дает правельный результат, проверяю я это так


CD.IBStoredProc1.ParamByName("PEOPLE_SERNAME").AsString := "ИВАНОВ";
CD.IBStoredProc1.ParamByName("PEOPLE_NAME").AsString := "И";
CD.IBStoredProc1.ParamByName("PEOPLE_PNAME").AsString := "И";
CD.IBStoredProc1.Prepare;
CD.IBStoredProc1.ExecProc;
Edit1.Text := CD.IBStoredProc1.Params[0].AsString;


в поле Edit1 выдается правельный ID - что показывает правельность работы.

Интересует вопрос, если мне надо выбрать n записей я напишу хранимую процедуру, то как мне это все отобразить в DBGrid? и может ли вообще хранимая процедура делать такое?
Вообщем надо сделать хранимую процедуру работающую как запрос через IBQuery.

Заранее спасибо.


Desdechado   (2004-01-24 17:39:00) [21]

www.ibase.ru - на русском
а оригинальная документация по IB (и ХП тоже) на www.ibphoenix.com - на англ.


Lucky_elf   (2004-01-24 16:29:00) [22]

Да но это было сделано метдом тыка, у меня нет ничего объясняющего как писать ХП, какие там разделы и принципы, я меня есть одна готовая ХП чужая, именно по ней я и пытаюсь разобраться как и что и поэтому мне мало что понятно.

Может знаешь ресурсы по ХП и желательно по IB

Мне вообще интресно, что можно использовать в написании ХП, т.е. можно ли использовать INSERT, DELETE, UPDATE и другие возможности SQL которые используются для написания запросов?

И что еще есть для работы с ХП

Спасибо за любые советы, хоть немного прояснили обстановку, в основу вроде бы въезжаю!


Digitman   (2004-01-24 15:55:00) [23]


> если я знаю, что у меня ХП выбирет несколько кортежей, то
> надо Open использовать


именно


> Поясни про SUSPEND - когда и куда его вставлять?


именно туда, куда ты и вставил его ... все верно ты сделал


Lucky_elf   (2004-01-24 15:38:00) [24]

2Kaif
Да вообщем-то я и сам знаю, что можно через IBQuery, но просто процедура будет делать вставку данных в несколько таблиц по определенному алгоритму, но я еще не дописал ее, и поскольку никогда еще не писал, то решил для начала попробывать а вообще будет-то работать это ХП.

2Digitman
Поясни про SUSPEND - когда и куда его вставлять?
т.е. если я знаю, что у меня ХП выбирет несколько кортежей, то надо Open использовать

А вообще мне надо написать ХП для фильтрации данных, т.е. будет одна форма и один DBGrid на ней и будет фильт которые будет отфильтровыать определенные записи, для этого я так подумал больше всего подойдет XP потому как один запрос для этого у меня не получился.


kaif   (2004-01-24 14:48:00) [25]

Можно вообще использовать для этой цели IBQuery.
Записать в свойство SQL такой текст:
SELECT PEOPLE_ID
FROM INSERT_KREDIT(:PEOPLE_SERNAME, :PEOPLE_NAME,:PEOPLE_PNAME)
Дальше определить параметры через ParamByName и сделать Open;


Digitman   (2004-01-24 14:41:00) [26]

если SP реализует селективный запрос, возвращающий ни одной, одну или более записей (suspend !) , то

IBStoredProc1. Open


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо