Problémy s SQL dotazy (ASA7 - ASA9)

Top  Previous  Next

Seznam témat:

nejčastější problémy při migraci z ASA7 na ASA9

 

Nejčastější problémy při migraci z ASA7 na ASA9

 

 

Při používání JOIN musí být operátorem ON spojeny jen joinované tabulky a ne jiné. Takže např. tento dotaz skončí chybou (illegal reference to correlation name):

SELECT ...

FROM t1, t2 LEFT OUTER JOIN t3 ON t1.x=t3.x

 

Pro opravu jej stačí upravit takto:

SELECT ...

FROM t2, t1 LEFT OUTER JOIN t3 ON t1.x=t3.x

 

Poznatek o kurzorech. ASA9 vadí, když se declare napíše v jiném cursoru, tj. declare druhého cursoru nesmí být vnořené do prvního cursoru. Nemusí být na začátku procedury v deklaracích, ale nesmí se deklarovat v jiném již otevřeném kurzoru.

 

Agregační fce v podselektech se nesmí odkazovat na sloupce mimo onen podselekt, jinak to skončí chybou "Aggregated expression contains multiple columns of which one or more are outer references".

Takže např. tohle skončí chybou:

SELECT t1.field1, t1.field2, (select MAX(t2.fieldX-t1.fieldY) from table2 as t2) as field3

FROM table1 as t1

 

SELECT FIRST bez použití ORDER BY vrací v ASA 9 warning s sqlstate = '01W18' (The result returned is non-deterministic)

 

ASA9 standardně blokuje updaty prim. klíče u tabulek, které jsou v publikacích (dojde k chybě sqlcode = -780). Musí se to explicitně povolit takto:

SET OPTION "PUBLIC"."Prevent_article_pkey_update" = 'Off'

 

Související témata