ďťż
 
[firebird] Procedura, numeracja pozycji na dok. ďťż
 
[firebird] Procedura, numeracja pozycji na dok.
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

[firebird] Procedura, numeracja pozycji na dok.



Art.R - 18-02-2007 00:04
[firebird] Procedura, numeracja pozycji na dok.
  Witam,
próbuję napisać procedurę, która po skasowaniu
pewniej pozycji, na jakimś dokumencie sprzedaży,
ponumerowała by od nowa te pozycje. Brakuje mi
kawałka kodu, przypuszczam że tu chodzi o kursor
ale jakoś nie mogę z tym ruszyć:

CREATE PROCEDURE DELETE_ZAMOWIENIAPOZ (
ID INTEGER,
ID_ZAMOWIENIA INTEGER)
AS

DECLARE VARIABLE I INTEGER;
DECLARE VARIABLE II INTEGER;
begin

DELETE FROM ZAMOWIENIAPOZ
where ID_ZAMOWIENIAPOZ=:ID;

ii=0;
FOR SELECT LP_FA
FROM ZAMOWIENIAPOZ
WHERE ID_ZAMOWIENIA=:ID_ZAMOWIENIA into I
DO
begin
ii=ii+1;
/*UPDATE ZAMOWIENIAPOZ SET LP_FA=:ii
WHERE ID_ZAMOWIENIA=:ID_ZAMOWIENIA;*/
end

suspend;
end

pozdrawiam Art.R

----------------------------------------------------------------------
Oficjalne konto pocztowe europejskich internautow!
>>> http://link.interia.pl/f19e8

--
Archiwum grupy: http://niusy.onet.pl/pl.comp.bazy-danych





lausiv@poczta.fm - 21-02-2007 00:05

  On 17 Lut, 10:51, Art....@poczta.fm (Art.R) wrote:
> Witam,
> próbuję napisać procedurę, która po skasowaniu
> pewniej pozycji, na jakimś dokumencie sprzedaży,
> ponumerowała by od nowa te pozycje. Brakuje mi
> kawałka kodu, przypuszczam że tu chodzi o kursor
> ale jakoś nie mogę z tym ruszyć:
>
> CREATE PROCEDURE DELETE_ZAMOWIENIAPOZ (
> ID INTEGER,
> ID_ZAMOWIENIA INTEGER)
> AS
>
> DECLARE VARIABLE I INTEGER;
> DECLARE VARIABLE II INTEGER;
> begin
>
> DELETE FROM ZAMOWIENIAPOZ
> where ID_ZAMOWIENIAPOZ=:ID;
>
> ii=0;
> FOR SELECT LP_FA
> FROM ZAMOWIENIAPOZ
> WHERE ID_ZAMOWIENIA=:ID_ZAMOWIENIA into I
> DO
> begin
> ii=ii+1;
> /*UPDATE ZAMOWIENIAPOZ SET LP_FA=:ii
> WHERE ID_ZAMOWIENIA=:ID_ZAMOWIENIA;*/
> end
>
> suspend;
> end
>
> pozdrawiam Art.R
>
> ----------------------------------------------------------------------
> Oficjalne konto pocztowe europejskich internautow!
>
> >>>http://link.interia.pl/f19e8
>
> --
> Archiwum grupy:http://niusy.onet.pl/pl.comp.bazy-danych

Kursorów radze unikać, ze względu na wydajność, a swoją drogąmoże
lepiej zrobić to tak (co prawda nie wiem w jakim SQL - moja propozycja
dla TSQL). A tak przy okazji to proponuje stosowac jakiekolwiek ale
zeby byly konwencje nazewnictwa i programowania - bedzie
czytelniej ;):

CREATE PROCEDURE Test_sp_DeleteZamowieniaPoz (
@Id Int,
@IdZamowienia int)
AS
BEGIN
DECLARE @UsuwanyNumer int

SELECT @UsuwanyNumer = Lp_Fa
FROM ZamowieniaPoz
WHERE Id_ZamowieniaPoz = @Id

DELETE
FROM ZamowieniaPoz
WHERE Id_ZamowieniaPoz=@Id

UPDATE ZamowieniaPoz
SET Lp_Fa = Lp_Fa -1
WHERE Lp_Fa > @UsuwanyNumer
AND Id_Zamowienia = @IdZamowienia

END

Przy założeniu oczywiści że numeracja pozycji jest w polu Lp_Fa ;)

Pozdrawiam




Art.R - 22-02-2007 00:01

  > Kursorów radze unikać, ze względu na wydajność, a swoją drogą może
> lepiej zrobić to tak (co prawda nie wiem w jakim SQL - moja propozycja
> dla TSQL). A tak przy okazji to proponuje stosowac jakiekolwiek ale
> zeby byly konwencje nazewnictwa i programowania - bedzie
> czytelniej ;):
>
> CREATE PROCEDURE Test_sp_DeleteZamowieniaPoz (
> @Id Int,
> @IdZamowienia int)
> AS
> BEGIN
> DECLARE @UsuwanyNumer int
>
> SELECT @UsuwanyNumer = Lp_Fa
> FROM ZamowieniaPoz
> WHERE Id_ZamowieniaPoz = @Id
>
> DELETE
> FROM ZamowieniaPoz
> WHERE Id_ZamowieniaPoz=@Id
>
> UPDATE ZamowieniaPoz
> SET Lp_Fa = Lp_Fa -1
> WHERE Lp_Fa > @UsuwanyNumer
> AND Id_Zamowienia = @IdZamowienia
>
> END
>
> Przy założeniu oczywiści że numeracja pozycji jest w polu Lp_Fa ;)
>
w firebird wyglądało by to prawie tak samo:

DECLARE VARIABLE I INTEGER;
begin

SELECT LP_FA
FROM ZAMOWIENIAPOZ
WHERE ID_ZAMOWIENIAPOZ=:ID into :I;

DELETE FROM ZAMOWIENIAPOZ where ID_ZAMOWIENIAPOZ=:id;

UPDATE ZAMOWIENIAPOZ SET LP_FA = LP_FA-1 WHERE
ID_ZAMOWIENIA=:ID_ZAMOWIENIA AND LP_FA > :I;
end

ja dałem select po delete, wychodziły mi bzdury więc zacząłem kombinować...

----------------------------------------------------------------------
Tez tak potrafisz? - zobacz >> http://link.interia.pl/f19ec

--
Archiwum grupy: http://niusy.onet.pl/pl.comp.bazy-danych
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    Firebird - zmiana NULL na NOT NULL [firebird] Czym =?ISO-8859-2?Q?zast=B1pi=E6_postgresowy_inte?==?ISO-8859-2?Q?rval_=3F?= [oracle] czy da =?ISO-8859-2?Q?si=EA_z_poziomu_procedury_?==?ISO-8859-2?Q?zrobi=E6_kopi=EA_zapasow=B1=3F?= MSSQL 2005 i uruchamianie procedury o =?ISO-8859-2?Q?okre=B6lone?==?ISO-8859-2?Q?j_godzinie?= Insert do tabeli danymi z innej tabeli Firebird Insert do tabeli z danych innej tabeli plus dodatkowa wartośćpola (Firebird) [MS SQL 2000/2005] Procedura z dynamicznym SQL firebird - dostep do roznych baz na podstawie nazwy usera,hasla i adresu IP =?iso-8859-2?q?Konfiguracja_Firebirda_pod_k=B1tem_wykorzystan ia_pami=EAci?= =?ISO-8859-2?Q?[firebird]_gdzie_si=EA_podzia=B3y_polskie_literki?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • fantazia.htw.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

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com