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

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

For Select (IB) аналог в ? [MSSQL]


masik ©   (2002-07-23 14:30:00) 

Господа подскажите плз, надо выполнить выборку из таблицы,и к каждой строку применить некую операцию.
Пробовал через курсоры. но ентпа штуковина возвращает каждую строку как отдельный набор данных. а мне надо енто в гриде отобразить


Delirium   (2002-07-24 14:33:00) [1]

Если призвести незначительное изменение в системной таблице:
update master.dbo.sysservers Set srvstatus=1440 where srvid=0
То становится возможным использовать функцию OpenQuery:
select * from OpenQuery(MyServer,"exec MyProc")


zx   (2002-07-24 12:02:00) [2]

Нет, только из views
Если в конце procedure стоит select то
exec procedure будет возвращать нд.


masik   (2002-07-24 10:42:00) [3]

zx ©, а можно делать
Select from "procedure"
сколько ни ковырял подобного примера не видел


masik   (2002-07-24 10:09:00) [4]

icu ©, ткни пальцем.
FETCH позиционирует курсор, да, позволяет выбрать строку, но результат то

au_lname au_fname
---------------------------------------- --------------------
Blotchet-Halls Reginald

au_lname au_fname
---------------------------------------- --------------------
del Castillo Innes


и в гриде видно
"Blotchet-Halls Reginald "


zx   (2002-07-24 09:55:00) [5]

По-моему это можно реализовать через CASE


icu   (2002-07-24 09:27:00) [6]

Посмотри описание оператора Fetch.


masik   (2002-07-24 09:06:00) [7]

Народ, ну хоть кто нибудь.
через временную таблицу сделал. а все таки


masik   (2002-07-23 16:34:00) [8]

постов много по неясным причинам ин7тернет связи, а ответ нужен один
В IB это писалось примерно так:
returns
pCol1, pCol2, pCol3, pCol4
for
Select Col1, Col2, Col3
from Table1
into :pCol1, :pCol2, :pCol3
do begin
:pCol4="";
for
Select Col21
from Table2
Where Param=:pCol1
into :pCol5
do
:pCol4=:pCol4+pCol5
suspend; //возврат значений pCol1, pCol2, pCol3, pCol4
end
в результате получается один набор данных
При подобной организации циклов с использованием курсоров получается тотже результат, но каждая возвращенная запись
(Select [Col1]=@Col1, ...) получается помещенная в своем наборе данных, соответственно Grid отображает только одну единственную запись из первого набора.
Я понимаю, что можно создать временную таблицу, запихнуть в нее данные и потом сделать общий селект, а без ентого как


Johnmen   (2002-07-23 15:56:00) [9]

>masik ©

Что-то много постов, а результата не видать...:)
Лучше приведи, как это ты делаешь для IB, а мы тебе скажем, как это переделать под MSSQL.


zx   (2002-07-23 15:48:00) [10]

Все равно не понял?:(
как связывать, почему join не пойдет?
сделай через Views.


Дмитрий Баранов   (2002-07-23 15:44:00) [11]

Более-менее универсальное решение - см.
Create function
в Books online


masik   (2002-07-23 15:11:00) [12]

Дополнительное поле представляет собой Select из нескольких записей, в связи с этим данные этих записей я умещаю в поле с разделителями, т.е. делаю Set. Поле рассчитывается по идентификатору из (Select x, y, z) в отдельной процедуре.


zx   (2002-07-23 15:03:00) [13]

Где рассчитывается дополнительное поле?
И как его надо приписать?


masik   (2002-07-23 14:56:00) [14]

прошу прощения у модератора, за такой постинг, просто при отправке сообщения происходит отвал, и непонятно помешено ли сообщени в форум


masik   (2002-07-23 14:53:00) [15]

Select x, y, z, дополнительное поле которое рассчитывается в отдельном блоке операторов, т.е. надо его приписать к выборке но не простой join


zx   (2002-07-23 14:37:00) [16]

Может я не понял ...
select (t1 + t2) * 5, t3 from tabl1


Наверх

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