Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
753 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [SGBD] Procédure stockée, paramètre et clause IN

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[SGBD] Procédure stockée, paramètre et clause IN

n°1077829
Arjuna
Aircraft Ident.: F-MBSD
Posté le 10-05-2005 à 14:33:48  profilanswer
 

Salut.
 
J'ai un léger souci...
 
J'ai une PS, qui prend en paramètre "@invoicenb".
 
Actuellement, dans ma procédure, j'ai une clause :
 

Code :
  1. and invoicenb like '%' + @invoicenb + '%'


 
Je pense que j'ai pas besoin d'expliquer ce que ça fait.
 
Par contre, maintenant, ce champ peut contenir non pas un fragment de numéro de commande, mais d'une liste de numéros de commande, par exemple :
 
"123,589,477"
 
Comment faire passer ça en paramètre ?
 
Dans un premier temps, j'ai tenté :
 

Code :
  1. and (invoicenb in (@invoicenb) or @invoicenb = '')


 
Mais ça plante, évidement.
 
Deplus, les numéros en question, c'est des numéros alpha-numériques, genre : "CDE-XY5987", donc en plus, il faudrait pouvoir repasser ça en chaînes correctement.
 
Comment je pourrais faire ?
 
PS: à savoir que le nombre de commandes passées en paramètre n'est pas connu à l'avance.

mood
Publicité
Posté le 10-05-2005 à 14:33:48  profilanswer
 

n°1077875
Arjuna
Aircraft Ident.: F-MBSD
Posté le 10-05-2005 à 14:52:53  profilanswer
 

Grrrr, bon, je me suis retrouvé obligé de faire une usine à gaz... M'enfin bon, ça marche !
 

Code :
  1. declare @invoicenb as varchar(8000)
  2. declare @pos as integer
  3. declare @oldpos as integer
  4. set @invoicenb = 'toto, titi , tata,tu tu,truc, essai'
  5. create table #tmpInvoiceNb (invoicenb varchar(50))
  6. set @oldpos = 0
  7. set @pos = charindex(',', @invoicenb, @oldpos + 1)
  8. while @pos > 0
  9. begin
  10. insert into #tmpInvoiceNb values (ltrim(rtrim(substring(@invoicenb, @oldpos + 1, (@pos - 1) - @oldpos))))
  11. set @oldpos = @pos
  12. set @pos = charindex(',', @invoicenb, @oldpos + 1)
  13. end
  14. select * from #tmpInvoiceNb
  15. drop table #tmpInvoiceNb


 
J'aurai plus qu'à faire un :

Code :
  1. and (exists (select null from #tmpInvoiceNb tt where tt.invoicenb = inv.invoicenb) or @invoicenb = '')


 
C pas bô :D


Message édité par Arjuna le 10-05-2005 à 15:03:00
n°1077876
Elmoricq
Modérateur
Posté le 10-05-2005 à 14:52:55  profilanswer
 

Je ne sais pas si ce que tu cherches à faire est possible.
 
En tout cas sous Sybase, je ne connais rien qui permette de parser une variable.

n°1077887
Arjuna
Aircraft Ident.: F-MBSD
Posté le 10-05-2005 à 15:03:32  profilanswer
 

Elmoricq a écrit :

Je ne sais pas si ce que tu cherches à faire est possible.


Tu me connais mal :D


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [SGBD] Procédure stockée, paramètre et clause IN

 

Sujets relatifs
Erreur sur procedure stockée Oracle[VC++] Paramètre en entrée d'1 appli en VC++
XMLEncoder et JTree - constructeur avec paramètre -Paramètres optionnels dans une fonction/procédure
[GTK] passer un parametre a une fonction callbackrediriger sur un page avec un paramètre
comment faire un import d'un fichier passé en paramètre??récupérer les parametre d'un table MySQL avec VB
récupérer les parametre d'un table MySQL avec VB 
Plus de sujets relatifs à : [SGBD] Procédure stockée, paramètre et clause IN


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR