Autor Téma: SELECT ... INTO ...  (Přečteno 345 krát)

Offline vandrovnik

  • Guru
  • *****
  • Příspěvků: 682
  • Karma: 41
    • Verze Delphi: 10.3
SELECT ... INTO ...
« kdy: 13-03-2019, 18:57:48 »
Ahoj,  nemohl byste mě někdo nasměrovat na dokumentaci, kde by bylo napsáno, co přesně se stane u příkazu SELECT ... INTO ..., pokud není vybrán žádný záznam? Nevím proč jsem si myslel, že se do proměnné má zapsat NULL, ale jak jsem dnes zjistil, není tomu tak :-) Firebird 3 a Firebird 2.5.

Něco jako:
Radek=9999;
SELECT FIRST 1 a.Radek
 FROM ... a
 WHERE (1=2)
 INTO :Radek;


Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4224
  • Karma: 37
    • Verze Delphi: XE7 professional
Re:SELECT ... INTO ...
« Odpověď #1 kdy: 13-03-2019, 19:24:12 »
Poor
Rated 1 time
Asi máš na mysli toto https://firebirdsql.org/refdocs/langrefupd25-psql-forselect.html
Pokiaľ je viem, tak to funguje na spôsob ako
Kód: [Vybrat]
while not Dataset.Eof do

...
a keďže Dataset je prázdny, tak nezbehne žiaden cyklus.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline vandrovnik

  • Guru
  • *****
  • Příspěvků: 682
  • Karma: 41
    • Verze Delphi: 10.3
Re:SELECT ... INTO ...
« Odpověď #2 kdy: 13-03-2019, 19:54:40 »
U toho FOR SELECT bych očekával, že se nic nestane, ale tohle je použito bez FOR (já tam jen potřebuji najít, na jakém řádku se vyskytuje položka s určitými parametry, a právě že jsem čekal, že nevyskytuje-li se vůbec, dostanu NULL).

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4224
  • Karma: 37
    • Verze Delphi: XE7 professional
Re:SELECT ... INTO ...
« Odpověď #3 kdy: 13-03-2019, 20:46:30 »
Už rozumiem. Lenže FB vráti prázdny dataset a podľa mňa tak nemá čo vrátiť. Ani očakávaný null. To je len moja domienka a na internete som k tomu nič nenašiel.
Najprv som to omylom spustil v Access-e a ten vrátil jeden riadok s hodnotou 0 :)
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Online Delfin

  • Padawan
  • ******
  • Příspěvků: 1764
  • Karma: 68
  • SW konzultant
    • Verze Delphi: 2009, Tokyo
Re:SELECT ... INTO ...
« Odpověď #4 kdy: 13-03-2019, 22:43:10 »
Ahoj,  nemohl byste mě někdo nasměrovat na dokumentaci, kde by bylo napsáno, co přesně se stane u příkazu SELECT ... INTO ..., pokud není vybrán žádný záznam? Nevím proč jsem si myslel, že se do proměnné má zapsat NULL, ale jak jsem dnes zjistil, není tomu tak :-)

Dokumentace je skoupa, ale z logiky veci by IMHO nemel DBMS hodnotu te promenne v tom statementu menit. Rikas v nem aby do promenne vratil hodnotu sloupce zaznamu tabulky jenz neexistuje, coz ovsem neznaci stav NULL; takova hodnota neexistuje, tudiz se neda povazovat za stav NULL.
I'm a soldier, so don't panic! I know the underground! I like WTFPL license! No more Google, go duck, go!

Offline chaloup

  • Mladík
  • **
  • Příspěvků: 97
  • Karma: 11
    • Verze Delphi: Delphi 10.2
Re:SELECT ... INTO ...
« Odpověď #5 kdy: 14-03-2019, 10:50:00 »
Podle mě je nejlepší v takovém případě testovat:
IF (ROW_COUNT = 1) THEN

Offline Palino

  • Nováček
  • *
  • Příspěvků: 2
  • Karma: 0
    • Verze Delphi: 7, XE, Seattle
Re:SELECT ... INTO ...
« Odpověď #6 kdy: 21-06-2019, 14:31:46 »
Excellent
Rated 1 time
napis

 Radek = (SELECT FIRST 1 a.Radek  FROM ... a  WHERE (1=2) );

a mas co si chcel, pri prazdnom vysledku je redak = null

Offline vandrovnik

  • Guru
  • *****
  • Příspěvků: 682
  • Karma: 41
    • Verze Delphi: 10.3
Re:SELECT ... INTO ...
« Odpověď #7 kdy: 21-06-2019, 14:40:07 »
Radek = (SELECT FIRST 1 a.Radek  FROM ... a  WHERE (1=2) );

Díky za tip!