Hello,
je galère avec les SqlParameter...
En gros, voilà le code :
et la proc (je n'ai pas la main dessus) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 SqlCommand sqlCmdCreeTache = new SqlCommand(); sqlCmdCreeTache.CommandType = CommandType.StoredProcedure; sqlCmdCreeTache.CommandText = "[ma_proc]"; sqlCmdCreeTache.Connection = ConnexionBD; sqlCmdCreeTache.Transaction = transac; SqlParameter sqlPrmGrpId = sqlCmdCreeTache.Parameters.Add("@GRP_ID", SqlDbType.UniqueIdentifier); sqlPrmGrpId.Value = (Guid)new GuidConverter().ConvertFromString("12345678-9123-4567-8901-234567890123"); SqlParameter sqlPrmCreateur = sqlCmdCreeTache.Parameters.Add("@CREATEUR", SqlDbType.NVarChar); sqlPrmCreateur.Value = LoginOperateur; SqlParameter sqlPrmDateCrea = sqlCmdCreeTache.Parameters.Add("@DATE_CREATION", SqlDbType.DateTime); sqlPrmDateCrea.Value = DateTime.Now; SqlParameter sqlPrmCodRet = sqlCmdCreeTache.Parameters.Add("@ID", SqlDbType.UniqueIdentifier); sqlPrmCodRet.Direction = ParameterDirection.ReturnValue; sqlCmdCreeTache.ExecuteNonQuery(); id = Convert.ToString(sqlCmdCreeTache.Parameters["@ID"].Value);
Et donc 2 questions :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 ALTER PROCEDURE [dbo].[ma_proc] @ID uniqueidentifier OUTPUT, @GRP_ID uniqueidentifier, @CREATEUR varchar(255), @DATE_CREATION datetime AS SET NOCOUNT ON SET @ID = NEWID() BEGIN INSERT INTO ... END
1) paramètre OUTPUT
à l'exécution j'ai cette exception : "La procédure ou fonction 'ma_proc' attend le paramètre '@ID', qui n'a pas été fourni."
Pourquoi fournir une valeur puisqu'il s'agit d'un paramètre de retour ?
Et surtout, comment ? (un sqlPrmCodRet.Value = ... ne fonctionne pas)
(PS : et pas besoin de faire un return @ID à la fin de la proc ?)
2) paramètres facultatifs
certains paramètres sont facultatifs : y a-t-il un moyen de ne pas renseigner les .Value ? (La procédure ou fonction 'ma_proc' attend le paramètre '@XXX', qui n'a pas été fourni.)
Partager