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

Вниз

Подскажите плз как это будет в Interbase SQL   Найти похожие ветки 

 
HMT   (2004-08-17 10:26) [0]

Это текст процедуры MS-SQL, уже три дня пытаюсь перести его в interbase. Смысл скрипта - суммирование прихода, вычитание расхода для получения остатков. Помогите плз, если кто синтаксис знает.

DELETE FROM Results

INSERT INTO Results SELECT DISTINCT(ProductName), SUM(Quantity) as Quantity from Inbound GROUP BY ProductName

DECLARE @ProductName varchar(500)
DECLARE @Discount int
DECLARE CT CURSOR FOR SELECT DISTINCT(ProductName), SUM(Discount) as Discount from Outbound GROUP BY ProductName

OPEN CT
WHILE 1=1 BEGIN
 FETCH FROM CT INTO @ProductName, @Discount

 IF @@fetch_status=-1
     BREAK
 IF @@fetch_status=-2
     CONTINUE

 UPDATE Results SET Quantity=Quantity-@Discount WHERE ProductName=@ProductName
END

DEALLOCATE CT
SELECT * FROM Inbound
SELECT * FROM Outbound
SELECT * FROM Results


 
HMT   (2004-08-17 10:38) [1]

Может курсор здесь лишний ?

Чем можно заменить fetch_status?


 
Соловьев ©   (2004-08-17 10:41) [2]


> DECLARE CT CURSOR FOR SELECT DISTINCT(ProductName), SUM(Discount)
> as Discount from Outbound GROUP BY ProductName
>
> OPEN CT
> WHILE 1=1 BEGIN
>  FETCH FROM CT INTO @ProductName, @Discount
>
>  IF @@fetch_status=-1
>      BREAK
>  IF @@fetch_status=-2
>      CONTINUE
>
>  UPDATE Results SET Quantity=Quantity-@Discount WHERE ProductName=@ProductName
> END

насколь я понял тут основной трабл?
for
SELECT DISTINCT(ProductName), SUM(Discount) as Discount from Outbound GROUP BY ProductName
into :ProductName, :Discount
do begin
 UPDATE Results SET Quantity=Quantity-:Discount WHERE ProductName=:ProductName;
end;


 
Соловьев ©   (2004-08-17 10:42) [3]


> Чем можно заменить fetch_status?

нету такого


 
HMT   (2004-08-17 10:42) [4]

Да, тут.

thankz..щас попробую


 
Sandman25 ©   (2004-08-17 11:01) [5]

Кстати, на MSSQL вместо ХП надо было написать:
select productname, sum(discount)
from
(
select productname, sum(discount) discount
 from inbound
 group by productname
union all
select productname, -sum(discount) discount
 from outbound
 group by productname
) a
group by productname


 
Sandman25 ©   (2004-08-17 11:03) [6]

Или даже

select productname, sum(discount)
from
(
select productname, discount
from inbound
union all
select productname, -discount
from outbound
) a
group by productname



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

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

Наверх





Память: 0.45 MB
Время: 0.031 c
3-1092716386
leonidus
2004-08-17 08:19
2004.09.12
Не полное отображение содержимого таблицы


14-1093436613
Darthman
2004-08-25 16:23
2004.09.12
Набираю людей (Надо один-два) для написания IDE для языка прогр.


1-1093739034
Сергей Петров
2004-08-29 04:23
2004.09.12
Как правильно двигать содержимое панели?


3-1092806200
segor
2004-08-18 09:16
2004.09.12
Быстрая очистка БД (IB)


3-1092653104
Марат
2004-08-16 14:45
2004.09.12
Сортировка в процедуре





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский