将参数传递给C#中的sql存储过程

Bas*_*rdo 7 c# stored-procedures sqlcommand parameter-passing

        string commandGetIslemIdleri = ("EXEC GetIslemIdleri");

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

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

            }

        }
Run Code Online (Sandbox Code Playgroud)

上面是我试图编写的代码CARIID,它使用一个整数参数来调用以下存储过程。当我运行代码时,发生错误并提示,"Procedure or function 'GetIslemIdleri' expects parameter '@CARIID', which was not supplied." 但据我从此处阅读的示例了解到的,我正在使用此代码发送参数,cmd.Parameters.Add(new SqlParameter("@CARIID", 110));我需要帮助,在此先感谢您。

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

SELECT ID
FROM TBLP1ISLEM
WHERE TBLP1ISLEM.CARI_ID=@CARIID
END
Run Code Online (Sandbox Code Playgroud)

Mor*_*gil 6

如果要使用 SqlCommand 调用存储过程,请不要执行EXEC GetIslemIdleri,只执行GetIslemIdleri,将CommandType设置为CommandType.StoredProcedure

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));
    }
}
Run Code Online (Sandbox Code Playgroud)