Problem z procedurą
zk12tor@interia.pl - 10-09-2006 01:03
Problem z procedurą
Witam wszystkich
Mam tabelę wynik z kilkoma polami m.in. data, czas i profil. Tabela umieszczona jest na serwerze Firebird. Stworzyłem procedurę:
SET TERM ^ ; CREATE PROCEDURE ustaw_profil AS declare variable u_data varchar(10) ; declare variable u_czas varchar(8) ; declare variable u_profil integer ; BEGIN FOR SELECT data,czas FROM wynik WHERE czas < '05:00:00' INTO :u_data,:u_czas DO begin UPDATE wynik SET profil = 1 Where (data = :u_data) and (czas = :u_czas); end END ^ SET TERM ; ^ COMMIT WORK;
Procedura kompiluje się prawidłowo, ale po: execute procedure ustaw_profil otrzymuję komunikat "Problem in BindingCursor". Co robię nie tak?
Zdaję sobie sprawę, że procedura po kolei do każdego rekordu w pole profil wpisze 1. Później wyrażenie "UPDATE wynik SET profil = 1 ..." zmienię na "UPDATE wynik SET profil = cośtam ....". Z góry dziękuję za wyjaśnienie.
Misiekd - 11-09-2006 00:36
Dnia 9 Sep 2006 12:56:11 -0700, zk12tor@interia.pl napisał(a):
eee a nie prościej
UPDATE wynik SET profil = 1 Where czas < '05:00:00'
-- Pozdrawiam Misiekd
zk12tor@interia.pl - 11-09-2006 00:36
Jak wspomniałem na końcu:
"Zdaję sobie sprawę, że procedura po kolei do każdego rekordu w pole profil wpisze 1. Później wyrażenie "UPDATE wynik SET profil = 1 ..."
zmienię na "UPDATE wynik SET profil = cośtam ...."."
czyli pole profil docelowo będzie przybierało różne wartości zależne od innych pól danego rekordu. Dlatego muszę zrobić to rekord po rekordzie. No chyba, że jest jakaś inna metoda. Generalnie w tabeli są pola data,czas,numer,profil,stawka,koszt. Pierwsze trzy pola są tworzone przez jakiś program. Po miesiącu muszę na podstawie tych trzech pól obliczyć pole koszt. Do tego służą mi pola pomocnicze profil i stawka. Obliczenie kosztu potrafię wykonać ale z użyciem programu klienckiego (w Delphi), w którym rekord po rekordzie pobieram datę, czas i numer, wyliczam kwotę i na końcu Update rekordu. Spodziewam się min. 5mln rekordów i dlatego chcę przenieść tę operację na serwer.
Jeżeli ktoś zechce mi coś podpowiedzieć to będę wdzięczny.
Artur Muszynski - 11-09-2006 00:36
.... > Obliczenie kosztu potrafię wykonać ale z użyciem programu > klienckiego (w Delphi), w którym rekord po rekordzie pobieram datę, > czas i numer, wyliczam kwotę i na końcu Update rekordu. Spodziewam > się min. 5mln rekordów i dlatego chcę przenieść tę operację na > serwer.
W ten sposób to na efekt się nie doczekasz w rozsądnym czasie. Może BULK INSERT albo INSERT FROM OPENXML, ale ja bym jednak posiedział nad przerzuceniem tego algorytmu z Delphi do czegoś strawnego dla SQL.
artur
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[MSSQL2000] Problem z =?ISO-8859-2?Q?tabel=B1/indeksem/zapytanie?==?ISO-8859-2?Q?m_czy_b=B3=B1d_w_bazie_danych=2E=2E=2E?=
mysql i mysql-front, problem
String line; if (line=="cos"){...}....problem
Problemy z =?ISO-8859-2?Q?instalacj=B1_PostgreSQL_na_syste?==?ISO-8859-2?Q?mach_Windows?=
[postgres] Problem z =?ISO-8859-2?Q?zmian=B1_struktury_i_z?==?ISO-8859-2?Q?ale=BFno=B6ciami=2E?=
[oracle] =?ISO-8859-2?Q?zmia=BFd=BFony_przez_problem=3A_za?==?ISO-8859-2?Q?pytanie_do_hierarchi?=
Problem z wartościami w MySQL :( [ MySQL and ASP and VBScript ]
[PGSQL] czy ktos mial problemy z initdb pgsql 8.1 ?
[MySQL] Problem z zapisem danych w bazie danych
Problem z mysql - can't connect to MySQL/nietypowo...
zanotowane.pldoc.pisz.plpdf.pisz.plkfia-tek.keep.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|