Avatar billede hrc Mester
04. oktober 2006 - 13:16 Der er 6 kommentarer og
1 løsning

Sets i Query-parametre

Følgende query:

  select id, navn from adresse where idtype in (1,2,3,4)

henter alle navne der har typen [1..4]. Hvordan programmerer man det?

Den fuskede løsning er:

  SQL.Text :=
    format('select id, navn from adresse where idtype in (%s),
          [idtype_st]); // idtype_st = '1,2,3,4';

... men det er altså ikke godt nok. Jeg vil gerne have det over i i en parameter i stedet (som nedenfor). Kan man det?

  SQL.Text :=
    'select id, navn from adresse where idtype in (:idtype);
Avatar billede martinlind Nybegynder
04. oktober 2006 - 14:03 #1
Ja så sætter du parambyname('idtype').asstring := '1,2,3,4'

men hvorfor det ??
Avatar billede hrc Mester
04. oktober 2006 - 15:15 #2
Kommer det så ikke til at se sådan her ud:

... where idtype in ('1,2,3,4')

Det er jo ikke meningen at det skal være en streng der.
Avatar billede martinlind Nybegynder
04. oktober 2006 - 17:55 #3
jo det har du nok ret i, kan ikke lige huske om den kan finde ud af det, men hvorfor vil du ændre den "format" måde du bruger nu ?
Avatar billede hrc Mester
04. oktober 2006 - 18:42 #4
Med parametre er der mere styr på om data er validt. Her sætter man datatypen op og der er ikke problemer med om " eller ' bruges til strenge. Desuden har jeg tit lavet en %d når jeg skulle bruge en %s.
Så generelt er det altså en fuskløsning at bruge format, mens velopsatte parametre har vist sig hensigtsmæssige. Derfor den store anstrengelse for at slippe for "formaten".
Avatar billede martinlind Nybegynder
04. oktober 2006 - 19:27 #5
Tja, hvis dine input ændre sig hele tiden så det er nødvendigt med den kontrol så....

men det er da rigtig at params har sine fordele, ved dog ikke lige hvordan man løser dit problem :)
Avatar billede hrc Mester
05. oktober 2006 - 08:56 #6
Det gør jeg jo heller ikke, men når nu man kan alt andet med TParams så må man da også kunne dette; det siger min logik mig. Det er da ikke kun i forbindelse med subqueries at man bruger "in" operatoren.

Nå jeg lader spørgsmålet stå lidt længere. Så kan det være at nogle af de andre "hiscores" såsom ArneV eller Borrisholt kigger forbi... :-)

Normalt kan jeg godt strikke en google-forespørgsel sammen og finde svaret der - men jeg kan ikke lige stykke de rette ord sammen her.
Avatar billede hrc Mester
18. oktober 2006 - 10:42 #7
Den kaster vist ikke et svar af som jeg kan bruge. Jeg løser det med en streng indsat i scriptet.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester