Momenteel ben ik bezig met het ontwerpen van een soort van flexibele statement; een sterk vereenvoudigd voorbeeld:
Die getparam is een functie die de voorwaarden uit een tabel haalt. In die tabel kan dus één rij staan met een '*' of 'LIKE '%ERDAM', maar er kunnen ook 3 rijen in staan met bijv. 'Eindhoven', 'Breda', 'Groningen'.
Uiteindelijk komt de query er dus zo uit te zien:
Al die logica heb ik al geprogrammeerd in een user defined function. Het enige wat mij niet lukt is het daadwerkelijk door die woonplaats-tabel lopen en één voor één de waarden eruit halen. Hier zijn truukjes voor, zoals het gebruik van een cursor of een simpel loopje, maar die werken volgens diverse bronnen niet in een user defined function (sql server geeft errormessage 444: "select statements within a function cannot return data to a client").
Op internet lees ik dat je dan per sé een stored procedure moet gebruiken, maar een stored procedure kun je vervolgens niet gebruiken wanneer je code wil plakken in een SQL-statement.
Maw: Wat zou een handige manier zijn om dit op te lossen?
SQL:
1
2
3
| SELECT * FROM CUSTOMER WHERE GETPARAM(WOONPLAATS) |
Die getparam is een functie die de voorwaarden uit een tabel haalt. In die tabel kan dus één rij staan met een '*' of 'LIKE '%ERDAM', maar er kunnen ook 3 rijen in staan met bijv. 'Eindhoven', 'Breda', 'Groningen'.
Uiteindelijk komt de query er dus zo uit te zien:
SQL:
1
2
3
| SELECT * FROM CUSTOMER WHERE WOONPLAATS='EINDHOVEN' OR WOONPLAATS='BREDA' OR WOONPLAATS='ROTTERDAM' |
Al die logica heb ik al geprogrammeerd in een user defined function. Het enige wat mij niet lukt is het daadwerkelijk door die woonplaats-tabel lopen en één voor één de waarden eruit halen. Hier zijn truukjes voor, zoals het gebruik van een cursor of een simpel loopje, maar die werken volgens diverse bronnen niet in een user defined function (sql server geeft errormessage 444: "select statements within a function cannot return data to a client").
Op internet lees ik dat je dan per sé een stored procedure moet gebruiken, maar een stored procedure kun je vervolgens niet gebruiken wanneer je code wil plakken in een SQL-statement.
Maw: Wat zou een handige manier zijn om dit op te lossen?