OVH Cloud OVH Cloud

VB.NET + SQL Serveur

7 réponses
Avatar
Sébastien
Bonjour,

je revient vers vous car depuis une semaine je cherche a resoudre un
probleme de procedure stocker/fonction executer sur un serveur SQL Serveur,
et mon precedent poste n'ayant rien donnée, (probablement que beaucoup de
personne on du profiter des vacances ...lol)

donc je rééxplique mon probleme,

j'ai sur un serveur SQL serveur plusieur fonction/procedure,
je voudrai les exécuters et recuperer la valeur de retour de la fonction.

j'ai essyer 2 code different,

celui si,

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconusingstoredprocedureswithcommand.asp

et celui la

Public Function STOREDPROCEDURE2()

nsBDTest.Initialise() 'connection a ma base

Dim lCmd As New SqlClient.SqlCommand("EXEC FUN_TEST3 'SEB'",
nsBDTest.clBaseDonne.BaseDonne)

Dim lDr As SqlClient.SqlDataReader = lCmd.ExecuteReader

While Not lDr.Read

Console.WriteLine(lDr.GetValue(0))

End While

lDr = Nothing

lCmd.Dispose()

End Function


Dans les 2 cas la procedure/foncction est bien executer, mais pa de valeur
de retour...
comment fair pour recuperer cette valeur de retour, rien ne marche et je
commence a desesperer ...
(j'ai le livre "SQL Serveur 2000 avec Microsoft Visual Basic.net", a la page
393, l'une de ces methode est expliquer mais je n'arrive pas a la fair
marcher ...)

merci pour ce qui ce penche sur mon probleme,
Dieudonné Sébastien,

7 réponses

Avatar
Francois Muller
Bonjour,

"Sébastien" <Aucun> a écrit dans le message de news:
Dans les 2 cas la procedure/foncction est bien executer, mais pa de valeur
de retour...



La premiére chose est de vérifier dans le client Sql Server que te procédure
retourne bien la valeur. Est ce le cas ?

F.
Avatar
Fabien Bezagu
Sebastien

As-tu essayé ExecuteScalar à la place de ExecuteReader ?

Fabien

"Sébastien" <Aucun> a écrit dans le message de news:

Bonjour,

je revient vers vous car depuis une semaine je cherche a resoudre un
probleme de procedure stocker/fonction executer sur un serveur SQL
Serveur,
et mon precedent poste n'ayant rien donnée, (probablement que beaucoup de
personne on du profiter des vacances ...lol)

donc je rééxplique mon probleme,

j'ai sur un serveur SQL serveur plusieur fonction/procedure,
je voudrai les exécuters et recuperer la valeur de retour de la fonction.

j'ai essyer 2 code different,

celui si,

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconusingstoredprocedureswithcommand.asp

et celui la

Public Function STOREDPROCEDURE2()

nsBDTest.Initialise() 'connection a ma base

Dim lCmd As New SqlClient.SqlCommand("EXEC FUN_TEST3 'SEB'",
nsBDTest.clBaseDonne.BaseDonne)

Dim lDr As SqlClient.SqlDataReader = lCmd.ExecuteReader

While Not lDr.Read

Console.WriteLine(lDr.GetValue(0))

End While

lDr = Nothing

lCmd.Dispose()

End Function


Dans les 2 cas la procedure/foncction est bien executer, mais pa de valeur
de retour...
comment fair pour recuperer cette valeur de retour, rien ne marche et je
commence a desesperer ...
(j'ai le livre "SQL Serveur 2000 avec Microsoft Visual Basic.net", a la
page 393, l'une de ces methode est expliquer mais je n'arrive pas a la
fair marcher ...)

merci pour ce qui ce penche sur mon probleme,
Dieudonné Sébastien,










Avatar
Francois Muller
"Fabien Bezagu" <fbezagu_at_novacor_dot_fr> a écrit dans le message de news:
ukPvv$
Sebastien

As-tu essayé ExecuteScalar à la place de ExecuteReader ?



Exact, mais il eût fallu qu'il donne plus d'info sur sa procédure.

F.
Avatar
Sébastien
bonjour,

ma procedure,

SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO




ALTER FUNCTION FUN_TEST3(@NOM VARCHAR(50)) RETURNS VARCHAR(50) AS
BEGIN
RETURN (@NOM + ' C le retour')
END




GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO


si je l'execute dans un select dans ce style "select TOP 1 FUn_TEST3('SEB')
From MaTable' cela me retourne bien la bonne valeur, ...
j'ai aussi executer un ExecuteScalar mais sa ne marche pas ...

cette fonction est super simple pour etre sur que le probleme ne vienne pas
de la fonction.

merci pou ce qui ce penche dessu,

sebastien Dieudonné

"Sébastien" <Aucun> a écrit dans le message de news:

Bonjour,

je revient vers vous car depuis une semaine je cherche a resoudre un
probleme de procedure stocker/fonction executer sur un serveur SQL
Serveur,
et mon precedent poste n'ayant rien donnée, (probablement que beaucoup de
personne on du profiter des vacances ...lol)

donc je rééxplique mon probleme,

j'ai sur un serveur SQL serveur plusieur fonction/procedure,
je voudrai les exécuters et recuperer la valeur de retour de la fonction.

j'ai essyer 2 code different,

celui si,

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconusingstoredprocedureswithcommand.asp

et celui la

Public Function STOREDPROCEDURE2()

nsBDTest.Initialise() 'connection a ma base

Dim lCmd As New SqlClient.SqlCommand("EXEC FUN_TEST3 'SEB'",
nsBDTest.clBaseDonne.BaseDonne)

Dim lDr As SqlClient.SqlDataReader = lCmd.ExecuteReader

While Not lDr.Read

Console.WriteLine(lDr.GetValue(0))

End While

lDr = Nothing

lCmd.Dispose()

End Function


Dans les 2 cas la procedure/foncction est bien executer, mais pa de valeur
de retour...
comment fair pour recuperer cette valeur de retour, rien ne marche et je
commence a desesperer ...
(j'ai le livre "SQL Serveur 2000 avec Microsoft Visual Basic.net", a la
page 393, l'une de ces methode est expliquer mais je n'arrive pas a la
fair marcher ...)

merci pour ce qui ce penche sur mon probleme,
Dieudonné Sébastien,










Avatar
Francois Muller
"Sébastien" <Aucun> a écrit dans le message de news:
ma procedure,
ALTER FUNCTION FUN_TEST3(@NOM VARCHAR(50)) RETURNS VARCHAR(50) AS
BEGIN
RETURN (@NOM + ' C le retour')
END



OK. Le ExecuteScalar ne retourne "rien" ou déclenche une exception ?

F.
Avatar
Sébastien
J'ai rajouter un Execute scalar,mais malheureusement il retourne toujours
nothing ....

qq a une autre idee ? (j'ai mis a jour avec le SP4 pour sql 2000, mais le
probleme subsiste ...)

merci,
seb

nsBDTest.Initialise()

Dim lCmd As New SqlClient.SqlCommand("EXEC FUN_TEST3 'SEB'",
nsBDTest.clBaseDonne.BaseDonne)

Dim lValeur As Object = lCmd.ExecuteScalar

Dim lDr As SqlClient.SqlDataReader = lCmd.ExecuteReader

While Not lDr.Read

Console.WriteLine(lDr.GetValue(0))

End While

lDr = Nothing

lCmd.Dispose()



"Francois Muller" a écrit
dans le message de news:

"Sébastien" <Aucun> a écrit dans le message de news:
ma procedure,
ALTER FUNCTION FUN_TEST3(@NOM VARCHAR(50)) RETURNS VARCHAR(50) AS
BEGIN
RETURN (@NOM + ' C le retour')
END



OK. Le ExecuteScalar ne retourne "rien" ou déclenche une exception ?

F.




Avatar
aitoz
J'utilise également des procedures sctockées ! je n'ai pas encore eu besoin
d'avoir de retour.
Cependant, j'ai lu quelque bouquins sur SQL server et je crois que tu dois
définir une variable de retour dans ta procédure stockée dans ton SQL server
avec la propriété OUTPUT !

Cherche de ce coté !
En gros, si tu veux que une certaine variable te soit retournée, il faut la
déclarer dans la procédure stockée sur le serveur et la déclarer avec la
propriété OUTPUT !

je ne crois pas l'avoir vu dans ta procédure.

Bonne chance!

Ps : essaye d'ecrire ta réponse si tu trouve, ca m'interesse pour le futur,
j'en aurais surement besoin !;-)