Avatar billede kernelx Juniormester
02. april 2007 - 09:57 Der er 1 kommentar og
1 løsning

PL-SQL generere en SELECT

hi,
jeg vil gerne have en PL/SQL-kode, hvor jeg har tre variabler, som
enten er tom ('') eller er fyldt.
Hvis en variable er fyldt, saa skal den includeres i where.
hvis ikke, saa skal variablen ikke forekomme i where.

eks1:
---
varCol1 = '1'
varCol22 = ''
varCol3 = ''
-->
select col1, col2, col3 from test
where col1='1'

eks2:
---
varCol1 = '1'
varCol22 = ''
varCol3 = '24'
-->
select col1, col2, col3 from test
where col1='1' AND col3='24'


eks3:
---
varCol1 = '4'
varCol22 = '5'
varCol3 = '24'
-->
select col1, col2, col3 from test
where col1='4' AND col2='5' AND col3='24'

desvaerre forsaar jeg ikke en prik af PL/SQL :-(
er der nogen, som kan give mig en PL/SQL-kode, som loeser denne opgave?

med venlig hilsen
KernelX
Avatar billede pgroen Nybegynder
02. april 2007 - 11:22 #1
Hvis jeg har forstået problematikken rigtigt, så kan du vel klare dig uden pl/sql:

SELECT col1, col2, col3
  FROM test
WHERE col1 = nvl(varCol1, col1)
  AND col2 = nvl(varCol22, col2)
  AND col3 = nvl varCol3, col3);

eller alternativt:
 
SELECT col1, col2, col3
  FROM test
WHERE (col1 = varCol1 OR varCol1 IS NULL)
  AND (col2 = varCol22 OR varCol22 IS NULL)
  AND (col3 = varCol3 OR varCol3 IS NULL);
Avatar billede pgroen Nybegynder
02. april 2007 - 11:23 #2
Hov, der smuttede en parantes:

SELECT col1, col2, col3
  FROM test
WHERE col1 = nvl(varCol1, col1)
  AND col2 = nvl(varCol22, col2)
  AND col3 = nvl(varCol3, col3);
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
Computerworld tilbyder specialiserede kurser i database-management

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