![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Не понятен принцып работы Stored Procedure. [D7, IB6.x]
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