2

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

例如,是否需要提供 OracleDbTypeEx、Size?

我会简单地提供名称、值、inOrOut?

你怎么看?

谢谢你。

4

1 回答 1

1

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

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

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

于 2013-01-24T13:43:34.347 回答