将参数传递给c中的sql存储过程#
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."
,但尽我所知,从我从here读取的例子我发送参数与此代码cmd.Parameters.Add(new SqlParameter("@CARIID", 110));
我需要帮助,提前谢谢。将参数传递给c中的sql存储过程#
ALTER PROCEDURE [dbo].[GetIslemIdleri]
@CARIID int
AS
BEGIN
SET NOCOUNT ON;
SELECT ID
FROM TBLP1ISLEM
WHERE [email protected]
END
如果你想使用一个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));
}
}
设置参数有点differenty:
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@CARIID", SqlDBType.Int).Value = 110;
我试过了,但同样的错误出来了。 – Bastardo 2011-03-23 15:51:42
HI,阅读下面,我发布了一个新的解决方案。 – 2011-03-24 14:41:44
你需要确保你的SqlCommand设置为CommandType.StoredProcedure。
cmd.CommandType = CommandType.StoredProcedure
我试了九次,没有什么改变,但谢谢。 – Bastardo 2011-03-23 15:48:36
你不太调用存储过程正确。你只需要通过存储过程(不执行)的名称,设置命令类型的存储过程,然后添加参数:
var command = new SqlCommand("GetIslemIdleri", conn);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add(new SqlParameter("@CARIID", 110));
我试了七次,没有什么改变,但谢谢。 – Bastardo 2011-03-23 15:47:55
你忘了加上prodecure`s名称:
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
这有工作。
感谢Mitja。我解决了它实际上是由数据库中的空值引起的问题,这导致读者设置为空,并且发生错误。 – Bastardo 2011-03-24 14:49:54
您是否指定了cmd.CommandType = CommandType.StoredProcedure; – WorldIsRound 2011-03-23 15:45:13
我试了十次,没有什么改变,但谢谢。 – Bastardo 2011-03-23 15:49:04