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()
答案 0 :(得分:1)
cmd.BindByName = True
的反面是“按位置绑定”
您可以添加参数pcomments
,pwid
和pactionby
。设置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中显示的顺序添加参数。