有没有人知道为了执行storedprocedure而没有在OracleParameter上设置所有字段值的后果?
例如,是否有必要提供OracleDbTypeEx,Size?
我只是提供名称,值,inOrOut?
您怎么看?
谢谢。
答案 0 :(得分:1)
对于输入参数,如果未指定,则输入值。这就是说代码整洁性和可维护性我倾向于不为输入设置这些属性,使用Parameters.Add方法,类似于SqlCommand类上的AddWithValue方法:cmd.Parameters.Add(“myvarname”,varvalue)。
另一方面,长度会改变行为。 IIRC,如果未指定长度,则当值长度超过参数长度时,会引发溢出异常。如果设置了长度,则输入将被修剪为该长度,至少在String / Varchar的情况下。我倾向于远离设置长度,因为我会更好地警告截断,而是限制前端的输入。
输出参数是另一回事。不设置输出变量类型和长度往往会导致“字符串缓冲区太小”和“非法变量名称/数字”,因此在大多数情况下,您需要为输出参数设置这些属性。