PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Message d'erreur bizarre lors de l'appel d'une procédure stockée
Message d'erreur bizarre lors de l'appel d'une procédure stockée
Iniciado por Stéphane B., 22,mar. 2019 09:17 - 4 respuestas
Miembro registrado
50 mensajes
Publicado el 22,marzo 2019 - 09:17
Bonjour,

Nous utilisons WD 24, l'accès natif MSSQL et un serveur MSSQL 2012. Parfois, quand nous appelons des procédures stockées en passant des paramètres, nous avons un message du style "SQL a renvoyé l'erreur 80040e14. Description incorrecte vers '@P...'".

Un exemple :
- Nous avons une procédure stockées nommée Del_GR_Dem qui ressemble à ça :
@CP_Type varchar(8 ),
@EP_IdClient int ,
@CP_Orga nvarchar(50) ,
@CP_SsOrga nvarchar(50),
@CP_Date varchar(8 )
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

DELETE FROM
GR_CondPrixDem
WHERE
GR_CondPrixDem.FieldRelation LIKE @CP_Type
AND
(
GR_CondPrixDem.IdCustomer = @EP_IdClient
OR GR_CondPrixDem.DataCliente = @CP_Orga
OR GR_CondPrixDem.DataCliente = @CP_SsOrga)
AND GR_CondPrixDem.EffectiveDate = @CP_Date

Dans le projet WD, nous l'appelons ainsi :
SL_supp_demande est une Source de données
VariableRAZ(SL_supp_demande)

SL_supp_demande.CP_Type="GR%"
SL_supp_demande.EP_IdClient=SP_Cli.EL_Client
SL_supp_demande.CP_Orga=SP_Cli.CL_Org
SL_supp_demande.CP_SsOrga=SP_Cli.CL_SubOrg
SL_supp_demande.CP_Date=SP_Cli.DL_DateApp

SI PAS HExécuteRequêteSQL(SL_supp_demande,Gestion_Remises,hRequêteSansCorrection,"Del_GR_Dem @CP_Type@EP_IdClient @CP_Orga @CP_SsOrga @CP_Date") ALORS
Erreur(HErreurInfo())
FIN

A l'exécution, nous avons ce message :





Ce problème, nous l'avons parfois (pas tout le temps), sur des procédures stockées de tous types...

Quelqu'un saurait-il ce qui ne va pas ?

Merci d'avance.
Miembro registrado
50 mensajes
Publicado el 26,marzo 2019 - 14:51
Personne n'a rencontré ce style de problème ?
Miembro registrado
6 mensajes
Publicado el 26,marzo 2019 - 15:17
Bonjour,

La requête SQL ne doit pas être correcte lors du HExécuteRequêteSQL.
Etes-vous sur que les @ sont bien supprimés lors de l'affectation des valeurs ?

Exemple de sortie :
SL_supp_demande.CP_Type="GR%"
HExécuteRequêteSQL("Del_GR_Dem @CP_Type ...")
HExécuteRequêteSQL("Del_GR_Dem @'GR%' ...") => HExécuteRequêteSQL("Del_GR_Dem 'GR%' ...")
Miembro registrado
50 mensajes
Publicado el 27,marzo 2019 - 17:13
Bonjour,

En fait, c'est assez bizarre : on voit bien la tentative d'exécution de ma procédure stockée dans le server profiler, mais les paramètres sont identifiés comme @P3, @P4 et @P5, au lieu de @P1, @P2 et @P3...
Mais j'ai bien la valeur que j'attends dans chaque paramètre.

J'ai essayé un peu toutes les combinaisons… sans succès….

Si quelqu'un a l'idée de génie qui pourrait me sortir de l'impasse, ce serait génial (en attendant, je passe par des requêtes paramétrées définies dans mon appli, mais je ne trouve pas ça hyper propre, car je fais exécuter côté client une requête qui serait beaucoup plus efficace si elle était exécutée côté serveur).
Miembro registrado
50 mensajes
Publicado el 28,marzo 2019 - 08:48
J'ai essayé avec autre une requête, qui n'utilise que 3 paramètres (mon précédent email s'appuyait dessus) et c'est assez étrange : Sur un serveur, elle fonctionne parfaitement. Sur un autre, j'ai un message similaire celui décrit dans mon premier message…

MSSQL est en train de me rendre dingue !