我在 sql server 中有一个数据库(NewYekAye),其中包含一些表和存储过程。其中一个表是 TbSoore,存储过程之一是 spGetSoore。
我使用以下代码创建了 spGetSoore:
USE [NewYekAye]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE Procedure [dbo].[spGetSoore]
@IdSoore INT
As
Begin
SELECT IdSoore, NameSoore, MakiMadani, TextMoghadame, TextHadis, TextMohtava, TextMoarefi FROM TbSoore WHERE (StutusSoore = 1) AND (IdSoore = @IdSoore)
End
Go
在 C# 代码中使用它:
string strsql =
$@"EXEC spGetSoore @IdSoore = @IdSoore;";
DataTable dt = new DataTable();
using (SqlConnection con = new SqlConnection(strcon))
{
using
(SqlCommand cmdSQL = new SqlCommand(strsql, con))
{
cmdSQL.CommandType = CommandType.StoredProcedure;
cmdSQL.Parameters.Add(new SqlParameter ("@IdSoore", forwardedIdSoore)) ;
con.Open();
dt.Load(cmdSQL.ExecuteReader());
}
}
但是当我运行该网站时,我收到此错误:
异常详细信息: System.Data.SqlClient.SqlException:找不到存储过程“EXEC spGetSoore @IdSoore = @IdSoore”。
我使用
SELECT IdSoore, NameSoore, MakiMadani, TextMoghadame, TextHadis, TextMohtava, TextMoarefi FROM TbSoore WHERE (StutusSoore = 1) AND (IdSoore = @IdSoore)
查询代替 Exec spGetSoore
检查了 C# 中的 sql 连接并成功了。
然后在 sql server 查询中运行
Exec spGetSoore
也可以工作。
当然,在 sql server 中,当我编写
EXEC spGetSoore @IdSoore = 1;
时,使用此工具提示显示 spGetSoore
的红色下划线:
找不到存储过程“spGetSoore”。
但是有效!!
像这样:
但我不知道为什么会出现此错误以及如何修复它。
请帮助我。
当您使用
CommandType.StoredProcedure
时,客户端库假定提供的 CommandText
是要调用的存储过程的名称,而不是完整的 TSQL 指令。查看您的错误,您会发现它正在搜索名为“EXEC spGetSoore @IdSoore = @IdSoore”的过程,而不是“spGetSoore”。
删除 CommandType 分配或将 CommandText 修复为“spGetSoore”。