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に だけを実行し、 CommandTypeGetIslemIdleriに設定します。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 に答える