execute block a if

7 views
Skip to first unread message

Tomáš Kurek

unread,
May 16, 2024, 8:40:52 AMMay 16
to fireb...@googlegroups.com
Ahoj

Zkouším tento kousek kódu a vím jak zprovoznit na firebirdu 2.5 až 4.0 .

execute block
as
begin
    if (exists (SELECT id_prp FROM table1 WHERE v3 = 147 and v4 =
2024)) then
       UPDATE table1 SET v1 = 4 , v2 = 1 WHERE  v3 = 147 and v4 = 2024 ;
    else
       INSERT INTO table1 (v1,v2,v3,v4) VALUES (147,2024,4,1) ;
end;




Engine Code    : 335544569
Engine Message :
Dynamic SQL Error
SQL error code = -104
Unexpected end of command - line 5, column 95


Zkoušel jsem dát pryč středníky na konci řádku a pak zahlásí správně :


Engine Code    : 335544569
Engine Message :
Dynamic SQL Error
SQL error code = -104
Token unknown - line 6, column 5
else


Už jsem obalil do begin , end a pořád se nechytá. Dává chybu :
execute block
as
begin
    if (exists (SELECT id_prp FROM table1 WHERE v3 = 147 and v4 =
2024)) then
      begin
       UPDATE table1 SET v1 = 4 , v2 = 1 WHERE  v3 = 147 and v4 = 2024 ;
     end

    else
     begin
       INSERT INTO table1 (v1,v2,v3,v4) VALUES (147,2024,4,1) ;
     end
end;



Engine Code    : 335544569

Engine Message :
Dynamic SQL Error
SQL error code = -104
Unexpected end of command - line 6, column 96

Nevíte prosím někdo jak napsat aby fungovalo ? U FireBird mám vždycky
středníky metodu pokus omyl ale tady už fakt nevím.

Díky


--
Tomáš Kurek

Slavomir Skopalik

unread,
May 16, 2024, 8:49:40 AMMay 16
to fireb...@googlegroups.com
Problem je strednik za poslenim end

Slavek

Ing. Slavomir Skopalik
Executive Head
Elekt Labs s.r.o.
MASA - Collection and evaluation of data from machines and laboratories
http://eng.elektlabs.com/products-and-services/masa
-----------------------------------------------------------------
Address:
Elekt Labs s.r.o.
Chaloupky 158
783 72 Velky Tynec
Czech Republic
---------------------------------------------------------------
Mobile: +420 724 207 851
skype:skopaliks
e-mail:skop...@elektlabs.com
http://www.elektlabs.com

Tomáš Kurek

unread,
May 16, 2024, 9:04:33 AMMay 16
to fireb...@googlegroups.com
Díky za reakci. Dal jsem ho pryč a pořád stejná chyba u prvního středníku.

Tomáš Kurek
Dne 16.05.2024 v 14:49 Slavomir Skopalik napsal(a):

> Problem je strednik za poslenim end
>
> Slavek
>
> Ing. Slavomir Skopalik
> Executive Head
> Elekt Labs s.r.o.
> MASA - Collection and evaluation of data from machines and laboratories
> http://eng.elektlabs.com/products-and-services/masa
> -----------------------------------------------------------------
> Address:
> Elekt Labs s.r.o.
> Chaloupky 158
> 783 72 Velky Tynec
> Czech Republic
> ---------------------------------------------------------------
> Mobile: +420 724 207 851
> skype:skopaliks
> e-mail:skop...@elektlabs.com
> http://www.elektlabs.com
>
> On 16.05.24 14:40, Tomáš Kurek wrote:
>> Ahoj
>>
>> Zkouším tento kousek kódu a nevím jak zprovoznit na firebirdu 2.5 až

Slavomir Skopalik

unread,
May 16, 2024, 9:13:30 AMMay 16
to fireb...@googlegroups.com
A jak dotaz vykonavas?

Kdyz ho das do redexperta, tak to takto spadne?

Slavek

Ing. Slavomir Skopalik
Executive Head
Elekt Labs s.r.o.
MASA - Collection and evaluation of data from machines and laboratories
http://eng.elektlabs.com/products-and-services/masa
-----------------------------------------------------------------
Address:
Elekt Labs s.r.o.
Chaloupky 158
783 72 Velky Tynec
Czech Republic
---------------------------------------------------------------
Mobile: +420 724 207 851
skype:skopaliks
e-mail:skop...@elektlabs.com
http://www.elektlabs.com

Tomáš Kurek

unread,
May 16, 2024, 9:29:49 AMMay 16
to fireb...@googlegroups.com
K testování příkazu používám flamerobin. Ale zkoušel jsem si tento
příkaz poslat i skrz ODBC a taky padl na chybu.


Tomáš Kurek
Dne 16.05.2024 v 15:13 Slavomir Skopalik napsal(a):

Slavomir Skopalik

unread,
May 16, 2024, 9:35:50 AMMay 16
to fireb...@googlegroups.com
Vzdy zalezi, jestli se vykonava prikaz, nebo script.

Jako prikaz je to ok, jako script ne.

Jako script se to zapisuje takto:

SET TERM ^;

EXECUTE BLOCK AS BEGIN
  IF (NOT EXISTS(SELECT * FROM S_STATES where id = 6060))
  THEN BEGIN

  END
END^

SET TERM ;^

COMMIT;

Slavek

Ing. Slavomir Skopalik
Executive Head
Elekt Labs s.r.o.
MASA - Collection and evaluation of data from machines and laboratories
http://eng.elektlabs.com/products-and-services/masa
-----------------------------------------------------------------
Address:
Elekt Labs s.r.o.
Chaloupky 158
783 72 Velky Tynec
Czech Republic
---------------------------------------------------------------
Mobile: +420 724 207 851
skype:skopaliks
e-mail:skop...@elektlabs.com
http://www.elektlabs.com

Tomáš Kurek

unread,
May 16, 2024, 9:50:29 AMMay 16
to fireb...@googlegroups.com
Dík za info. FlameRobin funguje ze scriptovým zápisem OK. Skrze ODBC se
podívám jak posíláme scripty pro založení dat + procedury a zkusím
poslat podobně.

Tomáš Kurek

Dne 16.05.2024 v 15:35 Slavomir Skopalik napsal(a):
Reply all
Reply to author
Forward
0 new messages