C#Odbc存储过程调用-过程或函数需要未提供的参数
我有一个基本的存储过程C#Odbc存储过程调用-过程或函数需要未提供的参数,c#,.net,sql-server,odbc,C#,.net,Sql Server,Odbc,我有一个基本的存储过程 ALTER PROCEDURE [dbo].[GetOrdersEmailContent] @Name nvarchar(50), @Body nvarchar(2000) OUTPUT AS BEGIN --SET NOCOUNT ON SET @Body = (SELECT Content FROM ORDERS_tblEmailContent WHERE Name
ALTER PROCEDURE [dbo].[GetOrdersEmailContent]
@Name nvarchar(50),
@Body nvarchar(2000) OUTPUT
AS
BEGIN
--SET NOCOUNT ON
SET @Body = (SELECT Content
FROM ORDERS_tblEmailContent
WHERE Name = @Name)
END
我用下面的代码从C#呼叫它
using (DbConnection)
{
DbConnection.Open();
using (OdbcCommand DbCommand = DbConnection.CreateCommand())
{
DbCommand.CommandType = CommandType.StoredProcedure;
DbCommand.CommandText = " GetOrdersEmailContent";
DbCommand.Parameters.Add("@Name", OdbcType.NVarChar, 50);
DbCommand.Parameters["@Name"].Value = templateName;
DbCommand.Parameters["@Name"].Direction = ParameterDirection.Input;
DbCommand.Parameters.Add("@Body", OdbcType.NVarChar, 2000);
DbCommand.Parameters["@Body"].Value = DBNull.Value;
DbCommand.Parameters["@Body"].Direction = ParameterDirection.Output;
DbCommand.ExecuteNonQuery();
emailBody = DbCommand.Parameters["@Body"].Value.ToString();
}
}
DbConnection.Close();
运行ExecuteNonQuery
时,它返回以下错误:
错误[42000][Microsoft][SQL Server本机客户端11.0][SQL Server]过程或函数“GetOrdersEmailContent”需要未提供的参数“@Name”
有人能提供建议吗?我查看了其他类似的问题,但没有一个解决方案适用或解决该问题考虑到
templateName
不是空的。无需为@Name
指定方向:using (DbConnection)
{
DbConnection.Open();
using (OdbcCommand DbCommand = DbConnection.CreateCommand())
{
DbCommand.CommandType = CommandType.StoredProcedure;
DbCommand.CommandText = " GetOrdersEmailContent";
DbCommand.Parameters.Add("@Name", OdbcType.NVarChar, 50);
DbCommand.Parameters["@Name"].Value = templateName;
DbCommand.Parameters.Add("@Body", OdbcType.NVarChar, 2000);
DbCommand.Parameters["@Body"].Value = DBNull.Value;
DbCommand.Parameters["@Body"].Direction = ParameterDirection.Output;
DbCommand.ExecuteNonQuery();
emailBody = DbCommand.Parameters["@Body"].Value.ToString();
}
}
DbConnection.Close();
你能试试这个
DbCommand.Parameters.Add(“@Name”,OdbcType.NVarChar,50)吗
你确定templateName
不是空的吗?Kashi_rock-恐怕这没有什么区别。一般来说,你需要检查“可空”参数。无论这是否解决了问题,您都应该将@Name的“设置值”代码更改为。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。DbCommand.Parameters[“@Name”].Value=string.IsNullOrEmpty(templateName)?(object)DBNull.Value:templateName;而且它解决您的问题的可能性很小