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