Передача параметра в хранимую процедуру sql в c # - PullRequest
6 голосов
/ 23 марта 2011
        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

Ответы [ 5 ]

4 голосов
/ 23 марта 2011

Если вы хотите вызвать хранимую процедуру с помощью 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));
    }
}
2 голосов
/ 24 марта 2011

Вы забыли добавить имя продукта:

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

Это должно работать.

2 голосов
/ 23 марта 2011

Вы должны убедиться, что для SqlCommand установлено значение CommandType.StoredProcedure.

cmd.CommandType = CommandType.StoredProcedure
0 голосов
/ 23 марта 2011

Вы не совсем правильно вызываете хранимую процедуру. Вам нужно только передать имя хранимой процедуры (без exec), установить тип команды для хранимой процедуры, а затем добавить параметры:

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

command.Parameters.Add(new SqlParameter("@CARIID", 110));
0 голосов
/ 23 марта 2011

Установите параметр немного по-другому:

cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@CARIID", SqlDBType.Int).Value = 110;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...