我試圖開始使用存儲過程。那麼,我現在有一個查詢只是返回一個字符串的單個值。我似乎無法看到我在這裏錯誤地做了什麼。轉換參數和存儲過程不起作用
的SQL低於:
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
Declare @ReturnVal Varchar(20)
-- Insert statements for procedure here
set @ReturnVal = (select a.AccBCPublicId from [MyTable Goes Here] a where a.AccId = @ACCId)
return @ReturnVal
END
using (SqlCommand sqlCommand = new SqlCommand("[dbo].[My Stored Procedure]", sqlConnection) { CommandType = CommandType.StoredProcedure })
{
//clean the starting 0's before sending. Originally had leading zeros
sqlCommand.Parameters.Add(new SqlParameter("@ACCId", strAccId.TrimStart(Convert.ToChar("0"))));
SqlParameter returnParam = new SqlParameter("@ReturnVal", SqlDbType.NVarChar, 20) {Direction = ParameterDirection.ReturnValue };
sqlCommand.Parameters.Add(returnParam);
sqlCommand.ExecuteNonQuery();
string bcAccount = (string)returnParam.Value;
}
我不斷收到以下錯誤。我明白爲什麼它看作爲int值類型。
Conversion failed when converting the varchar value 'bc:99988' to data type int.
聽起來像是你的'AccId'是'int'類型,但你提供它'BC:99988'爲字符串。 –
放一個斷點並檢查你的TrimStart是否有效......它似乎不是那麼誠實。 – Veljko89
這就是我想的,但它發送在不同的價值。所有int。 bc:值是返回的PCPublicId。 – Casey