OVH Cloud OVH Cloud

Pb avec sp_executesql au sein d'une procédure

2 réponses
Avatar
Lucazeau Daniel
[Question posé sur un autre forum mais resté sans réponse, alors
j'essaie ici]

Bonjour,
ce code

---
SET @strSQL1 = N'SELECT @aj_idContact=idContact FROM
travail01.dbo.contacts WHERE nom=@nomCherche'
SET @ParmDefinition = N'@aj_idContact INT OUT, @nomCherche VARCHAR(50)'
EXEC dbo.sp_executesql @strSQL1, @ParmDefinition, @aj_idContact OUTPUT,
@nomCherche = @nom
---

fonctionne bien en 'standalone' avec les déclarations nécessaires.

Mais si je le mets dans une procédure paramétrée, tout se gâte. Si la
création se passe bien, il n'en est pas de même de l'exécution.
Exécution qui se faisait bien quand j'exécutais ma requête sous forme de
chaîne, vu les volumes je cherche à optimiser les laps.

Que @nomCherche soit déclaré en NVARCHAR dans la liste des paramètres ne
change rien, j'ai irrémédiablement cette erreur :
---
Serveur : Msg 214, Niveau 16, État 2, Procédure sp_executesql, Ligne 87
Impossible de convertir le paramètre '@statement' dans le type de
données ntext/nchar/nvarchar attendu par la procédure.
---

Je n'ai rien trouvé sur le net, et je ne sais plus trop comment
chercher.
Toute piste, suggestion ou correction est bienvenue.
Merci d'avance

--
Daniel Lucazeau ~ Informaticien Freelance
Ajornet ~ http://www.ajornet.fr/

2 réponses

Avatar
Lucazeau Daniel
"Med Bouchenafa [MVP]" a écrit dans news:
#:

Un exemple aurait aid‚ … reproduire le problŠme



Oui, mais le script complet est trop gros et ne me semble pas apporter
plus. Je pensais que cela suffirait. Le script accède à des tables.

Le lien que vous m'indiquez n'utilise pas sp-executesql au sein de la
procédure MyProc.

--
Daniel Lucazeau ~ Informaticien Freelance
Ajornet ~ http://www.ajornet.fr/
Avatar
Med Bouchenafa [MVP]
Un exemple aurait aidé à reproduire le problème
Voici un lien qui pourrait peut-être servir
http://support.microsoft.com/?id&2499

--
Salutations
Med Bouchenafa
TETRASET
75015 Paris
"Lucazeau Daniel" a écrit dans le message de news:

[Question posé sur un autre forum mais resté sans réponse, alors
j'essaie ici]

Bonjour,
ce code

---
SET @strSQL1 = N'SELECT @aj_idContact=idContact FROM
travail01.dbo.contacts WHERE nom=@nomCherche'
SET @ParmDefinition = N'@aj_idContact INT OUT, @nomCherche VARCHAR(50)'
EXEC dbo.sp_executesql @strSQL1, @ParmDefinition, @aj_idContact OUTPUT,
@nomCherche = @nom
---

fonctionne bien en 'standalone' avec les déclarations nécessaires.

Mais si je le mets dans une procédure paramétrée, tout se gâte. Si la
création se passe bien, il n'en est pas de même de l'exécution.
Exécution qui se faisait bien quand j'exécutais ma requête sous forme de
chaîne, vu les volumes je cherche à optimiser les laps.

Que @nomCherche soit déclaré en NVARCHAR dans la liste des paramètres ne
change rien, j'ai irrémédiablement cette erreur :
---
Serveur : Msg 214, Niveau 16, État 2, Procédure sp_executesql, Ligne 87
Impossible de convertir le paramètre '@statement' dans le type de
données ntext/nchar/nvarchar attendu par la procédure.
---

Je n'ai rien trouvé sur le net, et je ne sais plus trop comment
chercher.
Toute piste, suggestion ou correction est bienvenue.
Merci d'avance

--
Daniel Lucazeau ~ Informaticien Freelance
Ajornet ~ http://www.ajornet.fr/