我試圖讓OUTPUT參數工作,但無論什麼原因,它拒絕。結果我一直得不到結果。如果我在SQL方面做了所有事情,它就可以正常工作。我測試了這個樣子,如何將一個值作爲OUTPUT參數返回?
DECLARE @test INT
EXEC MyProc @number = 1, @id = @test
PRINT @test
這給我的輸出正是我的預期。我已經看了這個代碼一個小時,它看起來正確。可能的原因是ID10T
錯誤,但我的大腦只是沒有看到它。
public static int MyFunc(int id)
{
using (var connection = new SqlConnection(ConfigurationManager.ConnectionStrings["cnString"].ConnectionString))
{
connection.Open();
using (var cmd = new SqlCommand("dbo.MyProc", connection)
{
CommandTimeout = 120,
CommandType = CommandType.StoredProcedure
})
{
cmd.Parameters.AddWithValue("@number", SqlDbType.Int);
var param = new SqlParameter("@id", SqlDbType.Int)
{
Direction = ParameterDirection.Output
};
cmd.Parameters.Add(param);
cmd.ExecuteNonQuery();
Debug.WriteLine(param.Value);
return Convert.ToInt32(param.Value);
}
}
}
ALTER PROCEDURE dbo.MyProc
(
@number INT ,
@id INT OUTPUT
)
AS
BEGIN
SET NOCOUNT ON;
SET @id = (
SELECT Id
FROM SomeTable
WHERE SomeValue = @number
);
RETURN;
END;
嘗試command.executescalar(),而不是 –
@JoeC沒有運氣 – Yatrix
你逝去的類型,而不是價值添加參數時。僅供參考 - 查看本文http://blogs.msmvps.com/jcoehoorn/blog/2014/05/12/can-we-stop-using-addwithvalue-already/ –