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

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

пример TStoredProc [D5, MSSQL]


Destup ©   (2005-06-07 17:03:00) 

Приветствую всех.

Начальство поставило задачу срочно изучить хранимые процедуры (MS SQL + Delphi 5) исключительно через TStoredProc (т.е. без ADO и TQuery).
И набросало такой план изучения -

1. Создание и вызов ХП.
2. Передать ХП параметр по ссылке (???)
3. Реализовать и использовать ХП возвращающую курсор.
4. ... возвращающую несколько курсоров.

вроде пока всё.

С первым я справился (хоть раньше на Делфи почти не кодил)
А вот со вторым ... это как ?

StoredProc1.Params.ParamByName('@num').Value := 5;

Это я прямо указал что хочу передать в ХП, а как по ссылке ?

Третье ... что такое курсор я смутно представляю (набор данных возвращаемых sql запросом ?)
Ну написал я   StoredProc1.Active := True;
и в DBGrid посыпались данные (курсор ?) через DataSource.
А ... а где мне получить указатель на этот курсор не выводя его в DBGrid ?
А если ХП вернула 2 и более курсоров ?

Весь инет облазил, не нашёл примера.
Помогите кто чем может, желательно маленькими кусочками кода.

Спасибо.
Евгений.


Val   (2005-06-08 11:18:00) [1]

Коллеги, м.б. в данном контексте под параметром по ссылке имеется просто in out параметр? думаю следует уточнить у задающих (преподов/начальства, etc.).


Desdechado   (2005-06-08 10:58:00) [2]

параметр по ссылке ты не передашь по определению - SQL-сервер работает на другой машине в своем адресном пространстве.
так что только по значению


evvcom   (2005-06-08 10:47:00) [3]


> Во-первых, в БДЕ "заморожена" поддержка MSSQL на уровне версии 6.5

Я в давнишние времена работал с MSSQL 6.5 через BDE без проблем, но без блобов, о блобах ничего не скажу.

> 2. Передать ХП параметр по ссылке (???)

Действительно ??? MSSQL может вернуть значение в параметре (см. в параметрах OUTPUT), но после вызова ХП это возвращенное значение все равно придется читать вручную (за исключением некоторых случаев с UpdateSQL). Плюс обрати внимание на GetResults.

> 3. Реализовать и использовать ХП возвращающую курсор

Обычный SELECT без INTO в ХП возвращает курсор.

> 4. ... возвращающую несколько курсоров

Несколько SELECT без INTO в ХП. Есть метод NextRecordSet, но не в TStoredProc :)


Danilka   (2005-06-07 21:29:00) [4]

[4] Destup   (07.06.05 17:38)
Нет никакого смысла сейчас осваивать БДЕ. Во-первых, в БДЕ "заморожена" поддержка MSSQL на уровне версии 6.5 (если не ошибаюсь).
Во-вторых, БДЕ изначально ориентирован на файл-серверные технологии.
А АДО, можно сказать, самая что ни на есть родная технология доступа к MSSQL, все возможности этой СУБД можно использовать работая через АДО.
Вобщем, можно запросто начинать с АДО, причем, статей и книг в тему можно найти в инете просто море.


Destup   (2005-06-07 17:38:00) [5]

> А у АДО есть TADOStoredProc, аналог БДЕ-ного.
Я думаю, что освоив BDE не сложно перейти на ADO.
Но пока ... даже с первым не выходит


Destup   (2005-06-07 17:36:00) [6]

> Blob тоже через TStoredProc?
... даже не знаю, а что это такое :)))

> предпочтительнее работать через АДО, чем через БДЕ.
думаю перейдём на АДО, но не скоро.


Danilka   (2005-06-07 17:07:00) [7]


> исключительно через TStoredProc (т.е. без ADO и TQuery).

хм. TStoredProc - это значит через BDE. На мой взгляд, с MSSQL все-таки намного предпочтительнее работать через АДО, чем через БДЕ.
А у АДО есть TADOStoredProc, аналог БДЕ-ного.


Val   (2005-06-07 17:05:00) [8]

Blob тоже через TStoredProc?


Наверх

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