ďťż
 
[FIREBIRD] - DB - v.1.5 - zmienne i petla ďťż
 
[FIREBIRD] - DB - v.1.5 - zmienne i petla
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] - DB - v.1.5 - zmienne i petla



jarudzik@wp.pl - 27-01-2007 00:03
[FIREBIRD] - DB - v.1.5 - zmienne i petla
  Witam serdecznie

to jest czesc procedury (na potrzeby posta uprosciłem ja)
....
BEGIN
ACTION_TABLE = 'TEST';
FOR
SELECT
RF.RDB$FIELD_NAME FIELD_NAME
FROM RDB$RELATION_FIELDS RF
LEFT JOIN RDB$FIELDS DOMAINS ON
(RF.RDB$FIELD_SOURCE = DOMAINS.RDB$FIELD_NAME)
WHERE RF.RDB$RELATION_NAME=:ACTION_TABLE
ORDER BY RF.RDB$FIELD_POSITION INTO :Field_N
DO
BEGIN
ACTION_V = 'NEW.'||:Field_N;
if (:ACTION_V IS NULL) then ACTION_V = '#!'; // mniejsza o ten
ACTION_VALUE = ';'||:ACTION_V;
END
.....

Chodz o to aby
W efecie ACTION_VALUE = NEW.KOLUMNA_A';'NEW.KOLUMNA_B';' ITD ....
Na razie ACTION_VALUE przyjmuje wartosc ';NEW.KOLUMNA_B' (czyli
ostatnia z petli w dodatku nie wartosc zmiennej tylko jej nazwa)

Da sie to jakos w firebirdzie jakos zrobi zrobic ?

Pozdrawiam
Rafał





sg - 27-01-2007 00:03

  Dnia 26-01-2007 o 16:07:02 <jarudzik@wp.pl> napisał(a):

> Witam serdecznie
>
> to jest czesc procedury (na potrzeby posta uprosciłem ja)
> ...
> BEGIN
> ACTION_TABLE = 'TEST';
> FOR
> SELECT
> RF.RDB$FIELD_NAME FIELD_NAME
> FROM RDB$RELATION_FIELDS RF
> LEFT JOIN RDB$FIELDS DOMAINS ON
> (RF.RDB$FIELD_SOURCE = DOMAINS.RDB$FIELD_NAME)
> WHERE RF.RDB$RELATION_NAME=:ACTION_TABLE
> ORDER BY RF.RDB$FIELD_POSITION INTO :Field_N
> DO
> BEGIN
> ACTION_V = 'NEW.'||:Field_N;
> if (:ACTION_V IS NULL) then ACTION_V = '#!'; // mniejsza o ten
> ACTION_VALUE = ';'||:ACTION_V;
> END
> ....
>
> Chodz o to aby
> W efecie ACTION_VALUE = NEW.KOLUMNA_A';'NEW.KOLUMNA_B';' ITD ....
> Na razie ACTION_VALUE przyjmuje wartosc ';NEW.KOLUMNA_B' (czyli
> ostatnia z petli w dodatku nie wartosc zmiennej tylko jej nazwa)
>
> Da sie to jakos w firebirdzie jakos zrobi zrobic ?
>
> Pozdrawiam
> Rafał
>

napisz to jaśniej, bo wogóle nie wiem o co Ci chodzi




sg - 27-01-2007 00:03

  Dnia 26-01-2007 o 19:31:15 sg <alpha@skynet.org.pl_without> napisał(a):

>> Da sie to jakos w firebirdzie jakos zrobi zrobic ?
>>
>> Pozdrawiam
>> Rafał
>>
>
> napisz to jaśniej, bo wogóle nie wiem o co Ci chodzi

a czy to jest Twój dalszy bój z tym logowaniem o które pytałeś się
ostatnio?




jarudzik@wp.pl - 27-01-2007 00:03

  ok postaram sie ...

1.Mamy tabele TEST z kolumnami powiedzmy

A int
B varchar 255
C varchar 255

2. Wykonuje na tej tabeli INSERT
3. W/W pętla FOR .. DO jest częscia triggera ktory przechwytuje nowe
dane i wstawia je do tabeli HISTORY
w kolumnie
HISTORY_VALUE blob

4.Na piechote mozna zrobic to tak

/*.. poczatek triggera , deklaracje zmiennych itp...*/
ACTION_VALUE = NEW.A||';'||NEW.B||';'||NEW.C
INSERT INTO HISTORY(HISTORY_VALUE) VALUES (:ACTION_VALUE);
/* .. koniec triggera ..*/

5. Poniewaz takich tabel jak TEST mam kilkanascie i na kazda musze
załozyc ten trigger. Zmienic musze więc wartość
zmiennej ACTION_VALUE ponieważ na innych tabelach sa inne kolumny
(inne ich nazwy). Probuje całosc zautomatyzowac i
podawac tylko nazwe Tabeli jako parametr. W w/w przykładzie jest
to:

.... BEGIN
ACTION_TABLE = 'TEST'; ....

6. Nastepnie zapytaniem SELECT pobieram z tabel systemowych nazwy
kolumn z tabeli 'TEST' i zrzucam nazwy tych kolumn do zmiennej Field_N

....
FOR
SELECT
RF.RDB$FIELD_NAME FIELD_NAME
FROM RDB$RELATION_FIELDS RF
LEFT JOIN RDB$FIELDS DOMAINS ON
(RF.RDB$FIELD_SOURCE = DOMAINS.RDB$FIELD_NAME)
WHERE RF.RDB$RELATION_NAME=:ACTION_TABLE < ------- tu jest nazwa tabeli
ORDER BY RF.RDB$FIELD_POSITION INTO :Field_N <----- tu jest nazwa
kolumny
....

7. Nastepnie gubie sie z kolei ja i robie cos takiego
....
DO
BEGIN
ACTION_V = 'NEW.'||:Field_N;
ACTION_VALUE = ';'||:ACTION_V;

W efekcie tych operacjach w kolumnie HISTORY_VALUE
mam dane

;NEW.C czyli tylko nazwe ostatniej kolumny tabeli test z wyrazem ;NEW.

Zamiast wartosci
NEW.A;NEW.B.NEW.C
dla przykładu
1;test;costamblabla

Ufff ... :) Mam nadzieje ze jasniej to opisałem
Pozdrawiam SG

Rafał





sg - 27-01-2007 00:03

  Dnia 26-01-2007 o 20:25:39 <jarudzik@wp.pl> napisał(a):

> 7. Nastepnie gubie sie z kolei ja i robie cos takiego
> ...
> DO
> BEGIN
> ACTION_V = 'NEW.'||:Field_N;
> ACTION_VALUE = ';'||:ACTION_V;
>

może tak:

ACTION_V = 'NEW.'||:Field_N;
ACTION_VALUE = ACTION_VALUE || ';'||:ACTION_V;




jarudzik@wp.pl - 27-01-2007 00:03

  Tak wojuje z tym juz od poniedziałku
Dodam ze IB dla mnie to zupełna nowosc ;/

BTW Dzieki za poprzednie podpowiedzi

PZDR
Rafal
  • 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?= Insert do tabeli danymi z innej tabeli Firebird Insert do tabeli z danych innej tabeli plus dodatkowa wartośćpola (Firebird) 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?= Re: [Firebird] BDE problem z zapisem konfiguracji pod Windows Vista =?iso-8859-2?q?firebird_i_triggery_-_logowanie_historii_zmian_zawarto=B6ci?= =?iso-8859-2?q?[firebird]_-_jak_zastapi=E6_pole_longtext_=3F?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • atanvarne633.opx.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