[MSSQL] Stored Procedure LIKE

Pagina: 1
Acties:

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

Topicstarter
(overleden)
Ik heb een stored procedure als volgt:
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? >:)

[ 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


  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

En hoe reageert je sproc als je deze uitvoert in de QA met deze parameters?
Ik denk dat dat wel gewoon zal werken je het dus moet zoeken in de ADO aanroep.

edit:
Geen echte oplossing, maar als noodoplossing kan je natuurlijk je statement uitbreiden met een extra parameter die aangeeft welke van de 3 'zoekmethoden' je wil gebruiken. En daarbij kan je dan dezelfde manier gebruiken als waarmee je nu de optionele parameters afvangt.
Maar dat zal natuurlijk geen schoonheidsprijs opleveren ;)

[ Voor 53% gewijzigd door Annie op 04-09-2003 18:00 ]

Today's subliminal thought is:


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

Topicstarter
(overleden)
Annie schreef op 04 September 2003 @ 17:57:
En hoe reageert je sproc als je deze uitvoert in de QA met deze parameters?
Ik denk dat dat wel gewoon zal werken je het dus moet zoeken in de ADO aanroep.
Verrekt, dat werkt wel...thanks!
Ik ga effe verder zoeken...

|:( |:( |:(

Mijn Relaties class replace-te de wildcards (waaronder %) "veiligheidshalve" met een lege string...

:X * RobIII schaamt zich diep

ik had weer eens teveel afgevangen :*)

[ Voor 27% gewijzigd door RobIII op 04-09-2003 18:02 ]

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


  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

RobIII schreef op 04 september 2003 @ 17:58:
[...]

Verrekt, dat werkt wel...thanks!
Dus, wat hebben we vandaag geleerd? Altijd in even in de QA testen ;)

* Annie gaat rennen voor de trein

/na edit: whehehe, prachtig :D

[ Voor 9% gewijzigd door Annie op 04-09-2003 18:04 ]

Today's subliminal thought is: