【问题标题】:ODP.NET are OracleParameter fields required for a stored procedure?ODP.NET 是存储过程所需的 OracleParameter 字段吗?
【发布时间】:2012-12-10 15:37:07
【问题描述】:

有谁知道不为 OracleParameter 设置所有字段值以执行存储过程的后果?

比如是否需要提供OracleDbTypeEx、Size?

我只需提供名称、值、inOrOut?

你怎么看?

谢谢。

【问题讨论】:

    标签: odp.net


    【解决方案1】:

    对于输入参数,如果未指定,则从值推断类型。这就是说为了代码的整洁性和可维护性,我倾向于不为输入设置这些属性,使用与 SqlCommand 类上的 AddWithValue 方法类似的方法中的 Parameters.Add 方法:cmd.Parameters.Add("myvarname", varvalue)。

    另一方面,长度确实会改变行为。 IIRC,如果您不指定长度,则当值长度超过参数长度时会引发一种溢出异常。如果您确实设置了长度,则输入将被修剪为该长度,至少在 String/Varchar 的情况下。我倾向于避免设置长度,因为我更愿意收到截断警报,而是限制前端的输入。

    输出参数是另一回事。不设置输出变量类型和长度往往会导致“字符串缓冲区太小”和“非法变量名称/编号”,因此在大多数情况下,您确实需要为输出参数设置这些属性。

    【讨论】:

      猜你喜欢
      • 2011-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多