Ik heb een stored procedure als volgt:
Geef ik voor parameter @sNaam nu "an" op, dan vind ik bijvoorbeeld "jansen" en "van dam". Dat komt omdat ik de parameter tussen '%' zet. Logisch.
Maar nu wil ik eigenlijk in mijn applicatie een mogelijkheid opgeven om te zoeken op naam die:
• Begint met...
• Bevat...
• Eindigt op...
Dus ik dacht gewoon die '%' weg te halen en die in mijn applicatie op de juiste plaatsen te zetten.
De stored procedure werd dus:
en afhankelijk van de gekozen optie in mijn applicatie gaf ik de parameter @sNaam dus de waardes:
• an%
• %an%
of
• %an
mee. Maar de wildcard word dan compleet genegeerd. Ik gebruik de ADO Parameters collectie om de variabelen via Parameter.value door te geven. Deze methode werkt voor alles, behalve voor de Like dus...
Mijn vraag: Hoe krijg ik mijn stored procedure nou zo ver om die wildcard wel te slikken en dus ook te gebruiken?
Even 1 extra noot: Ik wil NIET de query in mijn stored procedure eerst in een string gooien/opbouwen en dan met EXEC uitvoeren. Ik wil de stored procedure zoals 'ie nu is blijven gebruiken, hoogstens een kleine aanpassing om die wildcard aan de praat te krijgen.
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| CREATE PROCEDURE [sp_ListRelaties] @sNaam varchar(100) = null, @intRSID int = null AS Select rel_id, rel_Naam, rel_Tussenvoegsels, rel_Voorletters, rel_Voornaam, rel_Titel, rel_Adres1, rel_Adres2, rel_Postcode, rel_Woonplaats, ...., ...., .... From tbl_Relaties Where ( (rel_deleted = 0) and ((rel_Naam like '%' + @sNaam + '%') or (@sNaam is null)) and ((rel_rs_id = @intRSID) or (@intRSID is null)) ) Order by rel_Naam, rel_Voorletters, rel_Woonplaats GO |
Geef ik voor parameter @sNaam nu "an" op, dan vind ik bijvoorbeeld "jansen" en "van dam". Dat komt omdat ik de parameter tussen '%' zet. Logisch.
Maar nu wil ik eigenlijk in mijn applicatie een mogelijkheid opgeven om te zoeken op naam die:
• Begint met...
• Bevat...
• Eindigt op...
Dus ik dacht gewoon die '%' weg te halen en die in mijn applicatie op de juiste plaatsen te zetten.
De stored procedure werd dus:
code:
1
2
3
| ...
and ((rel_Naam like @sNaam) or (@sNaam is null))
... |
en afhankelijk van de gekozen optie in mijn applicatie gaf ik de parameter @sNaam dus de waardes:
• an%
• %an%
of
• %an
mee. Maar de wildcard word dan compleet genegeerd. Ik gebruik de ADO Parameters collectie om de variabelen via Parameter.value door te geven. Deze methode werkt voor alles, behalve voor de Like dus...
Mijn vraag: Hoe krijg ik mijn stored procedure nou zo ver om die wildcard wel te slikken en dus ook te gebruiken?
Even 1 extra noot: Ik wil NIET de query in mijn stored procedure eerst in een string gooien/opbouwen en dan met EXEC uitvoeren. Ik wil de stored procedure zoals 'ie nu is blijven gebruiken, hoogstens een kleine aanpassing om die wildcard aan de praat te krijgen.
edit:
De WHERE clause gebruikt de OR's om optionele parameters te negeren. Mooi he?
De WHERE clause gebruikt de OR's om optionele parameters te negeren. Mooi he?
[ Voor 10% gewijzigd door RobIII op 04-09-2003 17:57 ]
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij