7
        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));

            }

        }

以上是我尝试编写的代码,以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
4

5 回答 5

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));
    }
}
于 2011-03-23T15:46:11.877 回答
3

您忘记添加产品名称:

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

并执行以下程序:

CREATE PROCEDURE [dbo].[GetIslemIdleri] 
(
    @CARIID int 
)
AS
BEGIN
SET NOCOUNT ON;    
SELECT ID FROM TBLP1ISLEM WHERE TBLP1ISLEM.CARI_ID = @CARIID
END

这必须奏效。

于 2011-03-24T14:37:53.887 回答
2

您需要确保将 SqlCommand 设置为 CommandType.StoredProcedure。

cmd.CommandType = CommandType.StoredProcedure
于 2011-03-23T15:45:44.133 回答
0

设置参数有点不同:

cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@CARIID", SqlDBType.Int).Value = 110;
于 2011-03-23T15:45:40.750 回答
0

您并没有正确调用存储过程。只需传递存储过程的名称(不带exec),将命令类型设置为存储过程,然后添加参数:

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

command.Parameters.Add(new SqlParameter("@CARIID", 110));
于 2011-03-23T15:46:13.093 回答