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

Offline vandrovnik

  • Guru
  • *****
  • Příspěvků: 613
  • Karma: 40
    • 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ů: 3903
  • Karma: 35
    • 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ů: 613
  • Karma: 40
    • 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ů: 3903
  • Karma: 35
    • 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ů: 1621
  • Karma: 65
  • 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

 

S rychlou odpovědí můžete používat BB kódy a emotikony jako v běžném okně pro odpověď, ale daleko rychleji.

Jméno: E-mail:
Ověření:
Datový typ v Delphi, který má True a False: