0
我有一个基本的存储过程C#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 = @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
运行,它返回以下错误:
ERROR [42000] [Microsoft][SQL Server Native Client 11.0][SQL Server]Procedure or function 'GetOrdersEmailContent' expects parameter '@Name', which was not supplied.
任何人都可以建议吗?我已经查看了其他类似的问题,但没有解决方案适用或解决问题
你可以试试这个'DbCommand.Parameters.Add( “@名称”,OdbcType.NVarChar,50).value的= TEMPLATENAME;' –
你肯定' templateName'不是null? – jamiedanq
Kashi_rock - 恐怕这没有什么区别 – CarlG