[ASP.NET] Récupérer valeur de retour d'une procédure stockée

Dans mon code asp, j’ai mis un formulaire accompagné d’un SQLDataSource qui lui appelle ma procédure stockée (SQL Server), et qui n’affiche uniquement les champs nécessaires pour la saisie utilisateur (via SELECT … FROM).
Le formulaire est dans une formview et est relié à la SQLDataSource. Dès que l’utilisateur valide le formulaire, je veux pouvoir vérifier certain critère via ma procédure stockée.

La Procédure vérifie les données, si tout est correcte, elle effectue une INSERT dans la table dédiée.
Ma procédure stockée marche parfaitement, à la fin du traitement, elle renvoie 1 des 3 valeurs définit (commande type : RETURN ma_valeur). A l’aide de cette valeur de retour, je peux donc savoir ce que l’utilisateur a fait comme bétise.

Le problème maintenant, c’est de savoir comment je récupère cette valeur ? sachant que le bouton de validation est du type InsertButton, avec la command “Insert” (générer via le lien entre la formview et la SqlDataSource). Quel commande précise me permet de gérer cet retour ? (est ce en C# ou en asp que je devrais la récupérer ?).

Tu continues la confusion ^^ ASP n’est pas un langage, donc je ne vois pas ce que tu veux dire.

Sinon, le premier paramètre d’une procédure stockée est toujours @return_value, et c’est la dedans que tu as ta valeur (si tu as un fait un return evidemment). Sinon, rien ne t’empêche de faire un select de ta valeur à la fin de la procédure, et du coup tu récupères ça comme n’importe quelle requête.

[quote=« BodySplash, post:2, topic: 29464 »]Tu continues la confusion ^^ ASP n’est pas un langage, donc je ne vois pas ce que tu veux dire.

Sinon, le premier paramètre d’une procédure stockée est toujours @return_value, et c’est la dedans que tu as ta valeur (si tu as un fait un return evidemment). Sinon, rien ne t’empêche de faire un select de ta valeur à la fin de la procédure, et du coup tu récupère ça comme n’importe quelle requête.[/quote]

Arf, je suis confus à force d’utiliser l’execution des requetes via SqlDataSource dans ma page aspx qui ne génère pas de code C#.
Bon, je mets le code que j’ai ^^

[code]// code de ma page aspx

<asp:SqlDataSource ID=« dsUsers » runat=« server » ConnectionString="<%$ ConnectionStrings:TimeSheetConnectionString %>" InsertCommand=« Ajout_User » SelectCommand=« SELECT nomUser, prenomUser, loginUser, Password, Email, Commentaire FROM Utilisateur » InsertCommandType=« StoredProcedure » >

<asp:Parameter Name=« nomUser » />
<asp:Parameter Name=« prenomUser » />
<asp:Parameter Name=« loginUser » />
<asp:Parameter Name=« Password » />
<asp:Parameter Name=« Email » />
<asp:Parameter Name=« Commentaire » />
<asp:Parameter Name=« IsAdmin » DefaultValue=« 0 » />
<asp:Parameter Name=« IsOnline » DefaultValue=« 0 » />
<asp:Parameter Name=« IsApproved » DefaultValue=« 1 » />

</asp:SqlDataSource>

// suivi du formulaire en Formview
<asp:FormView ID=« FrmViewRegister » runat=« server » DataSourceID=« dsUsers » DefaultMode=« Insert » OnItemInserted=« FrmViewRegister_ItemInserted »>

<asp:TextBox ID=« nomUserTextBox » runat=« server » Text=’<%# Bind(« nomUser ») %>’ TabIndex=« 1 » ></asp:TextBox>
<asp:TextBox ID=« prenomUserTextBox » runat=« server » Text=’<%# Bind(« prenomUser ») %>’ TabIndex=« 2 »></asp:TextBox>
<asp:Button ID=« InsertButton » runat=« server » CausesValidation=« True » CommandName=« Insert »
Text=« S’inscrire » Font-Bold=« true » TabIndex=« 7 » OnClick=« InsertButton_Click » >
</asp:Button>

</asp:FormView>[/code]

Et voici ma procédure :

[sql]CREATE PROCEDURE [dbo].[Ajout_User]
@nomUser VARCHAR(20),
@prenomUser VARCHAR(20),
@loginUser VARCHAR(30),
@Password VARCHAR(128)
AS IF EXISTS (SELECT [nomUser], [prenomUser] FROM [TimeSheet].[dbo].[Utilisateur] WHERE [nomUser] = @nomUser AND [prenomUser] = @prenomUser)
BEGIN RETURN 25
END
IF EXISTS (SELECT [loginUser], [Email] FROM [TimeSheet].[dbo].[Utilisateur] WHERE [loginUser] = @loginUser OR [Email] = @Email)
BEGIN RETURN 20
END
ELSE
BEGIN INSERT INTO [TimeSheet].[dbo].[Utilisateur] ([nomUser]
,[prenomUser]
,[loginUser]
,[Password])
VALUES
(@nomUser
,@prenomUser
,@loginUser
,@Password)
END[/sql]

Dans la page aspx.cs, j’ai voulu traité la valeur retourné via l’évènement OnCLick du bouton insert de la page aspx .

protected void InsertButton_Click(object sender, EventArgs e) { // mes instructions }

Edit :

Comment ca je fais un select à la fin de procédure ? Un exemple s’il te plait :stuck_out_tongue:

[code]DECLARE @v_result
SET @v_result = 0

IF (test_erreur)
BEGIN
SET @v_result = (code_erreur)
END
ELSE
BEGIN
Mon_traitement
END

SELECT @v_result[/code]

Par contre en faisant ça, ce n’est plus une insertcommande que tu utilises, mais une select. Bon ce n’est peut-être pas très propre non plus, mais disons que l’historique de ma boîte fait qu’on l’utilise assez souvent :stuck_out_tongue:

Enfin Glop pourrait sans doute mieux expliquer tout ça que moi :stuck_out_tongue: je ne suis qu’un padawan en .NET