Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.02.25;
Скачать: [xml.tar.bz2];

Вниз

Возврат набора данных из stored proc   Найти похожие ветки 

 
deadbitch   (2004-01-31 19:13) [0]

Как вернуть в MSSQL из хранимой процедуры набор данных подобно тому как это делается в IB (через цикл и SUSPEND)? У меня есть книга MS SQL Server 2000/Е. Мамаев, но там о такой возможности ни слова. Разве такой возможности нет???


 
vuk   (2004-01-31 19:35) [1]

Просто написать select. Без всяких выкрутасов.


 
deadbitch   (2004-01-31 20:07) [2]

Хе. А мне так не катит. У меня идет выборка данных через курсор, по этим данным считаются суммы по столбцам из другой таблицы. И нады выдать на выходе набор данных где в строке - поле из табл. 1 и сумма для этого значения. Пока оно суется во временную таблицу и уже отуда селект, но это долго... :(


 
vuk   (2004-01-31 20:20) [3]

to deadbitch:
>У меня идет выборка данных через курсор
А смысл использовать курсоры для выборок?


 
deadbitch   (2004-01-31 21:10) [4]


/* Запихивает в таблицу T_ProfileStrPN энергии по сечениям на производственные нужды */
/* mode = 1 - using @month and @year */
/* mode = 0 - using ONLY @year */
CREATE proc p_getStructureProfilesPNEnergy
@mode tinyint,
@month varchar(15),
@year int
as
>declare profiles cursor scroll local for
> select distinct [Profile] from T_StructureDistribution where
> ([Profile] <> NULL) and (len([Profile]) > 10) and >([Profile] LIKE "ПН%")
declare @profile1 varchar(100)
declare @energy bigint

delete from T_ProfileStrPN where (len([Profile]) >= 0)
open profiles
fetch first from profiles into @profile1
while (@@fetch_status = 0)
begin
set @energy = 0
if (len(@profile1) > 10) and (@profile1 <> NULL)
begin
if @mode = 1
select @energy = sum(Energy) from T_MonthCount where
([Month] LIKE @month) and ([Year] = @year) and
(ControlChannel_ID in (select ControlChannel_ID from T_StructureDistribution where [Profile] = @profile1))
else
select @energy = sum(Energy) from T_MonthCount where
([Year] = @year) and
(ControlChannel_ID in (select ControlChannel_ID from T_StructureDistribution where [Profile] = @profile1))

insert into T_ProfileStrPN ([Profile], Energy) values (@profile1, @energy)
end
fetch from profiles into @profile1
end
close profiles
deallocate profiles
GO


Здесь бы мне @energy и @profile1 и выдать бы как строку данных из процедуры, а не пихать в таблицу. Так можно сделать это как в IB или нет, вот в чем вопрос?


 
vuk   (2004-01-31 21:50) [5]

На первый взгляд все проблемы решаются при помощи group by. И никаких временных таблиц и курсоров.


 
deadbitch   (2004-02-01 11:16) [6]

Ладно, признаю ошибку, бо в MSSQL я новичок. Как-то раньше до group by не допер. Ну а теперь не пойму почему у меня не видно этого селекта. Вот процедура:

CREATE PROCEDURE p_getPN
AS
select distinct A.[Profile], sum(B.Energy)
from T_StructureDistribution A, T_MonthCount B
where (A.ControlChannel_ID = B.ControlChannel_ID) and
(A.[Profile] LIKE "ПН%") and
(B.[Month] LIKE "Январь") and
(B.[Year]=2004)
group by A.[Profile]
GO

Взял TADOStroredProc, к ней TDataSet, к нему - TDBGRid. Делаю .ExecProc - а грид пустой, хотя в Query Analyzer"e все пашет. В чем проблема?


 
deadbitch   (2004-02-01 12:00) [7]

Черт, ведь там .Open есть для таких случаев. :)



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2004.02.25;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.03 c
1-79772
Lena19
2004-02-12 20:09
2004.02.25
передача данных из масива в масив


11-79686
=Sniper=
2003-06-07 23:50
2004.02.25
Не работает BorderStyle и BorderIcons


14-80211
KM
2004-02-05 18:23
2004.02.25
эксплоиты


14-80181
тихий вовочка
2004-01-31 15:44
2004.02.25
Как стать сисадмином?


1-79965
_Прохожий
2004-02-13 15:51
2004.02.25
Получение иконки по расширению файла





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский