【问题标题】:handle out parameters处理参数
【发布时间】:2011-03-13 13:01:20
【问题描述】:
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());
}

这是使用out参数的最佳方式吗?

【问题讨论】:

    标签: c# .net sql sql-server tsql


    【解决方案1】:

    GetParameterValue() 函数不是 .NET 框架的一部分,所以我不确定它的作用。

    无论如何,您似乎将SqlInt64 转换为string,然后再转换为long。这会奏效,但这是很长的路要走。 SqlInt64long 之间存在隐式转换。试试:

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

    这避免了对中间 string 的需要。

    【讨论】:

    • 谢谢,我会试试的。 “db.AddOutParameter(command, "@proc_id", DbType.Int64, 8)" 中的变量大小如何?我怎么能确定它会是 8 点?
    • @Naor:Int64 占用 64 位,因此它可能总是占用 8 个字节。 size 参数是可选的,根据我的经验,它只对字符串是必需的。
    • @Naor:AddOutputParameter 不是 ADO.NET 的一部分。使用标准的 ADO.NET 函数,您可以 command.Parameters.Add(new SqlParameter { DbType = DbType.Int64, ParameterName = "@proc_id" });
    猜你喜欢
    • 2020-09-18
    • 2013-10-31
    • 1970-01-01
    • 2017-11-26
    • 2013-04-10
    • 2017-01-22
    • 1970-01-01
    • 1970-01-01
    • 2023-02-05
    相关资源
    最近更新 更多