什么OracleCommand.BindByName = True意味着什么?

时间:2018-03-21 15:18:39

标签: vb.net oracle

NET应用程序并尝试更新数据库表。以下更新查询是否有效?如果我设置BindByName = True,.NET会将null和SYSDATE视为参数吗? P.S这是缩短查询,实际查询有点复杂,所以在我试用之前需要一些确认

cmd.Parameters.Clear()
cmd.CommandText = "UPDATE TBL_xxx_xxx SET NEXT=null, ACTIONDATE=SYSDATE, comments=:pcomments, STATUS=11 WHERE ACTIONDATE IS NULL AND WFID=:pwid AND ACTIONBY=:pactionby"
cmd.CommandType = CommandType.Text
cmd.BindByName = True

cmd.Parameters.Add(New OracleParameter(":pcomments", OracleDbType.Varchar2)).Value = somevalue
cmd.Parameters.Add(New OracleParameter(":pwid", OracleDbType.Int64)).Value = somevalue
cmd.Parameters.Add(New OracleParameter(":pactionby", OracleDbType.Varchar2)).Value = somevalue

cmd.ExecuteQuery()

1 个答案:

答案 0 :(得分:1)

cmd.BindByName = True的反面是“按位置绑定”

您可以添加参数pcommentspwidpactionby。设置cmd.BindByName = True后,您可以按任意顺序添加它们。

所以,在你的情况下,这个应该也可以工作:

cmd.Parameters.Add(New OracleParameter(":pwid", OracleDbType.Int64)).Value = somevalue
cmd.Parameters.Add(New OracleParameter(":pactionby", OracleDbType.Varchar2)).Value = somevalue
cmd.Parameters.Add(New OracleParameter(":pcomments", OracleDbType.Varchar2)).Value = somevalue

如果设置cmd.BindByName = False(这是默认设置),则必须按照CommandText中显示的顺序添加参数。