2011-03-13 51 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