7
votes

Passer un paramètre à une procédure stockée SQL en C #

ALTER PROCEDURE [dbo].[GetIslemIdleri] 
    @CARIID int 
AS
BEGIN
SET NOCOUNT ON;

SELECT ID
FROM TBLP1ISLEM
WHERE TBLP1ISLEM.CARI_ID=@CARIID
END

2 commentaires

Avez-vous spécifié cmd.commandtype = CommandType.StoredProcedure;


J'ai essayé cela comme dix fois, rien n'a changé mais merci.


5 Réponses :


0
votes

Définissez le paramètre un peu différent:

cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@CARIID", SqlDBType.Int).Value = 110;


0 commentaires

2
votes

Vous devez vous assurer que votre SQLCOMMAND est défini sur COMMANDTYPE.SToredProcédrique.

cmd.CommandType = CommandType.StoredProcedure


0 commentaires

6
votes

Si vous souhaitez appeler une procédure stockée à l'aide d'un SQLCOMMAND, n'exécutez pas EXEC GETATISLEMIDLERI code>, exécutez juste getSideMidleri code>, réglage CommandType à CommandType.StoredProcède CODE>:

cmd = new SqlCommand("GetIslemIdleri", sqlConn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new SqlParameter("@CARIID", 110));

using (var reader = cmd.ExecuteReader()) //error occurs here
{
    while (reader.Read())
    {
        islemidleri.Add(reader.GetInt32(0));
    }
}


3 commentaires

J'ai essayé cela comme huit fois, rien n'a changé mais merci.


@Emreveriyaz - alors vous avez une erreur ailleurs dans votre code, je viens de la tester localement (sur MS SQL 2008 R2), cela fonctionne correctement.


Pourrait également essayer le raccourci pour définir des paramètres maintenant cmd.parameters.addvithavalue ("@ paramètre", quelqueValue);



0
votes

Vous n'appelez pas tout à fait la procédure stockée correctement. Il vous suffit de transmettre le nom de la procédure stockée (sans EXEC), définissez le type de commande sur la procédure stockée, puis ajoutez les paramètres suivants:

var command = new SqlCommand("GetIslemIdleri", conn);
command.CommandType = CommandType.StoredProcedure;

command.Parameters.Add(new SqlParameter("@CARIID", 110));


1 commentaires

J'ai essayé cela comme sept fois, rien n'a changé mais merci.



3
votes

Vous avez oublié d'ajouter le nom de la procédure: xxx

et faire la procédure comme: xxx

Ceci doit fonctionner. < / p>


1 commentaires

merci mitja. J'ai résolu le problème que c'était en fait causé par une valeur nulle dans ma base de données, ce qui cause que le lecteur soit défini sur NULL et cette erreur se produise.