SqlCommand, SqlParameter et paramètres facultatifs
Hello,
je galère avec les SqlParameter...
En gros, voilà le code :
Code:
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 la proc (je n'ai pas la main dessus) :
Code:
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 |
Et donc 2 questions :
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 ? 8O
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.)