簡體   English   中英

初始化存儲過程輸出參數

[英]Initializing stored procedure output parameter

我有一個簡單的SQL Server存儲過程:

ALTER PROCEDURE GetRowCount

(
@count int=0 OUTPUT
)

AS
Select * from Emp where age>30;
SET @count=@count+@@ROWCOUNT;

RETURN

我正在嘗試初始化並訪問以下C#代碼中的輸出參數:

SqlConnection con = new SqlConnection();
con.ConnectionString = "Data Source=localhost\\SQLEXPRESS;Initial Catalog=answers;Integrated Security=True";

SqlCommand cmd = new SqlCommand();
cmd.Connection = con;

cmd.CommandText = "GetRowCount";
cmd.Parameters.Add(new SqlParameter("@count", SqlDbType.Int));
cmd.Parameters["@count"].Direction = ParameterDirection.Output;
con.Open();
cmd.Parameters["@count"].Value=5;
cmd.ExecuteNonQuery();

int ans = (int)(cmd.Parameters["@count"].Value);
Console.WriteLine(ans);

但是在運行代碼時,會在代碼的倒數第二行拋出InvalidCastException (我調試並檢查了Value屬性中沒有返回任何內容)。

如何在代碼中正確初始化輸出參數? 提前致謝!

您需要將ParameterDirection更改為ParameterDirection.InputOutput

看看這里的示例: 如何從過程sql server 2005獲取返回值到c#

您不必初始化output參數。 使用ParameterDirection.InputOutput將值傳遞給存儲過程。

類型異常的最可能原因是該過程返回DBNull.Value 您可以測試如下:

var ans = cmd.Parameters["@count"].Value as int?;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM