2011-03-13 56 views
2
public static long callproc() 
{ 
    DbCommand command = db.GetStoredProcCommand("dbo.proc"); 
    db.AddOutParameter(command, "@proc_id", DbType.Int64, 8); 
    db.ExecuteNonQuery(command); 
    return long.Parse(db.GetParameterValue(command, "@proc_id").ToString()); 
} 

這是使用輸出參數的最佳方式嗎?把手輸出參數

回答

2

函數GetParameterValue()不是.NET框架的一部分,所以我不確定它的功能。

無論如何,它看起來像你正在轉換SqlInt64string,然後到long。這將工作,但這是漫長的。在SqlInt64long之間存在隱式轉換。試試:

return (long) command.Parameters["@proc_id"].Value; 

這樣可以避免需要中間的string

+0

謝謝,我會盡力的。 「db.AddOutParameter(command,」@proc_id「,DbType.Int64,8)」中的變量大小如何?我怎麼能確定它會是8? – Naor 2011-03-13 13:08:45

+1

@Naor:一個'Int64'需要64位,所以它可能總是佔用8個字節。 'size'參數是可選的,根據我的經驗,它只需要字符串。 – Andomar 2011-03-13 13:17:20

+0

如何可選?我必須把它..沒有其他選擇.. – Naor 2011-03-13 14:44:40