Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : SQL Server : concatenation [ Archives / Problème avec une procédure stockée ] (aieeeuuuuu)

vendredi 28 avril 2006 à 10:59:32 | SQL Server : concatenation

aieeeuuuuu

Bonjour,

Je suis sous SQL server 2000, j'ai fait une procédure stockée qui prend deux paramétres.

dans une autre procédure stockée, je veux appeler la première, avec en deuxième parametre la concatenation d'un texte et d'une variable:

EXEC MaProc @param1, 'identifiant : ' + @identifiant

 

seulement cela ne fonctionne pas.

j'y arrive en passant par une variable temporaire:

@temp = 'identifiant : ' + @identifiant

EXEC MaProc @Param1, @temp

cela ne pose aucun problème.

etrange quand meme !

actuellement c'est comme ca que je fait, mais comme je dois appeler plusieurs fois de suite cette procédure, je trouve ca beaucoup plus propre et surtout plus lisible de l'appeler directement plutot que d'utiliser la variable temporaire.

est ce que quelqu'un a déjà eu ce problème ?


merci


vendredi 28 avril 2006 à 11:49:00 | Re : SQL Server : concatenation

fabrice69

Administrateur CodeS-SourceS
Pour concaténer des variables (donc en chaine de charactere), il faut déja transformer ces données en varchar, sinon le "+" est aussi utilisé pour des calculs, ce qui lui pose problème.


Romelard Fabrice (Alias F___)

vendredi 28 avril 2006 à 14:22:24 | Re : SQL Server : concatenation

aieeeuuuuu

oui, mais la il s'agit deux VARCHAR.

j'ai essayé pour etre sur avec CAST(...) mais rien n'y fait.
et plus etrange, quand je passe par la variable temporaire, la concatenation se passe tres bien. c'est ca que je ne comprend pas !

j'ai aussi essayé de mettre toute ma concatenation entre parenthese pour bien faire comprendre au systeme qu'il s'agit du deuxieme parametre :

EXEC MaProc @Param1, ('identifiant :' + CAST(@Identifiant AS VARCHAR(20)) ne fonctionne pas non plus


vendredi 28 avril 2006 à 15:22:43 | Re : SQL Server : concatenation

aieeeuuuuu

en fait j'ai fait le test suivant :

j'ai créé uneprocédure stockée

CREATE PROCEDURE MaProc
(@param AS VARCHAR(256))
AS

PRINT @param
GO

ensuite sous query analyser, je lance

EXEC MaProc 'A' + 'B'

ca devrait m'afficher AB, mais a la place de cela, j'ai l'erreur :
Line 1: Incorrect syntax near '+'.

C'est quoi ce delire. SQL Server n'est pas capable de concatener a la volée, on est obligé dans ce cas la depasser par une variable temporaire pour concaterner et appeler ensuite la procédure stockée ?

et pourtant j'ai essayé tout ce qui me passait par la tete pour pouvoir faire ca en une seule ligne :
mettre entre parenthses
entre crochets (on sait jamais :))

rien a faire, ca ne fonctionne pas !


mardi 2 mai 2006 à 11:13:09 | Re : SQL Server : concatenation

Mindiell

DECLARE @param_final as VARCHAR (255)

@param_final = @param1 + @param2
EXEC MaProc @param_final

Ca devrait marcher, non ?

Mindiell Software

mardi 2 mai 2006 à 12:02:41 | Re : SQL Server : concatenation

aieeeuuuuu

oui, comme ca ca fonctionne, mais justement je voudrais eviter de passer par une ligne intermediaire.

en fait, j'utilise une procédure stockée pour ajouter des données qui serviront ensuite a générer le corps d'un mail.
ce mail contient des info sur une commande (numero, quantité)
j'appelle la procédure une fois par ligne dans le mail.
donc en gros une vingtaine de fois.
c'est pour ca que je voulais pouvoir tout faire d'un seul coup, pour que tout soit plus lisible.

j'ai effectivement la solution de secours de passer par une ligne intermediaire pour concaténer, mais ca devient tres lourd a lire par la suite. c'est pourquoi je cherchais a comprendre, car la en plus il y a quelque chose qui m'echappe : je ne comprend pas pourquoi ca ne fonctionne pas en concatenant directement.



mardi 2 mai 2006 à 18:34:37 | Re : SQL Server : concatenation

Mindiell

EXEC MaProc str(@param1 + @param2)

et ca ?

Mindiell Software

mercredi 3 mai 2006 à 10:06:03 | Re : SQL Server : concatenation

aieeeuuuuu

je n'avais pas essayé, mais ca ne fonctionne pas non plus :
j'ai une erreur de syntaxe.

j'avais essayé avec CAST(...) mais ca ne fonctionne pas mieux !

le pire c'est que je ne trouve pas grand chose sur le net qui parle de concaténation de ce type. a chaque fois il s'agit de concaténation de type
SET @param = 'A' + 'B'
mais pas de concaténation directe dans l'appel d'une proc stock.

le suspens persiste.

pour le moment, j'ai de toute facon utilisé la solution de secours, c'est a dire en passant par une varaible temporaire, mais tetu comme je suis il va falloir que je trouve une explication a tout ca !


mercredi 3 mai 2006 à 10:12:25 | Re : SQL Server : concatenation

aieeeuuuuu

plus fort encore !

j'ai fait le test suivant :

j'ai créé une fonction qui concaténe les deux parametres en entrée. elle s'appelle concat

quand je fait :

PRINT dbo.concat('A', 'B')

il m'affiche AB

jusque la tout va bien.

quand j'essaie de l'utiliser avec ma proc stock de test plus haut (celle qui fait juste un PRINT de la variable placée en parametre) :

EXEC MaProc dbo.concat('A', 'B')

j'ai encore une erreur :
Line 1: Incorrect syntax near '.'.

et si je ne mets pas le dbo. :
EXEC MaProc concat('A', 'B')

j'ai l'erreur
Line 1: Incorrect syntax near 'A'.

etrange non ?






Cette discussion est classé dans : sql, server, procédure, identifiant, concatenation


Répondre à ce message

Sujets en rapport avec ce message

log procédure stockée (SQL Server) [ par jguillemette ] bonjour,à partir d'un *.bat je lance un DTS qui exécute une procédure stockéla trace de l'exécution du *.bat est redigée dans un fichier logce dernier comment se connecter a un autre serveur sql server depuis sql server ??? [ par sosou80 ] bonjour, je travail avec sql server 2005 , et je développe une procédure stockée dans la quelle je souhaiterai , faire une insertion vers une table d' SQL Server 2005 ne detecte pas de serveur [ par bestMed ] Bonjour voila dans le cadre de mon stage d'intégration je suis amener a créer un web service en ASP.NET (langage C#) mais voila je me coince dès le dé [SQL Server 2005] DTSWizard [ par sdisp ] Bonjour.J'ai une petite question à vous poser, je viens d'utiliser l'outil DTSWizard de SqlServer 2005 qui permet d'importer des données (dans mon cas SQL Server et VB 6.0 [ par lebasketeur ] Salut tout le monde,Voila je vous présente mon probleme : je developpe une application VB pourl'Entreprise où je passe un stage; J'ai fait tout le tra où telecharger sql server 2000? [ par sikove ] salut tout le monde vous savez où on peut telecharger sql server 2000 ?  un setup qui regroupe tout et qui fonctionne ?j'ai téléchargé ici : http://w SQL SERVER 2000/2005 [ par awjan ] Bonjour tout le monde, si quelqu'un peut m'aider à faire une étude comparative entre sql server 2000 et sql server 2005 (pour un stage)MERCI Lien entre SQL Server 2005 et MySQL [ par Edohan ] Voilà, je travaille actuellement sur une solution de workflow basée sur une Base de Données SQL Server 2005. J'ai en parallèle des Base de Données so Optimiser le temps réponse avec sql server [ par yuri2008 ] Bonjour,J'ai une table de 200 000 lignes dans une base de données. Dans cette table, il y a des champs text, ntext (gros champs de texte), date,. <p erreur 5 sql server 2000 [ par misslonely ] bsr,j'ai un grand problème,  je suis débutante en sql server 2000,je l'ai installé et désinstallé plusieurs fois , mais ce problème persiste toujours,


Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 2,371 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.