日期:2014-05-17  浏览次数:21145 次

OracleCommand 执行多条delete 操作?
ADO.NET VB.NET 2005
我需要删除两个表里面的数据
  Dim sql As String = "Delete from SDA.SDA_USER where ACCOUNT='" & UID & "';" & vbCrLf
  sql += "Delete from SDA.SDA_USER_ROLE where ACCOUNT='" & UID & "';"

除了两次执行 cmdGetS.ExecuteNonQuery 操作外 ,有没有办法 一次 ExecuteNonQuery 删除两个表的数据
谢谢


------解决方案--------------------
oracle中可以这样子操作:
delete from 表A;
delete from 表B
表示分别从两个表分别删除,可以一并执行
所以你可以把两个SQL写成字符串后一并执行,然后在commit;

引用楼主 lwl0606 的帖子:
ADO.NET VB.NET 2005
我需要删除两个表里面的数据
Dim sql As String = "Delete from SDA.SDA_USER where ACCOUNT='" & UID & "';" & vbCrLf
sql += "Delete from SDA.SDA_USER_ROLE where ACCOUNT='" & UID & "';"

除了两次执行 cmdGetS.ExecuteNonQuery 操作外 ,有没有办法 一次 ExecuteNonQuery 删除两个表的数据
谢谢

------解决方案--------------------
好象用.NET不行哦,可以尝试建立两表关联,或者用存储过程
------解决方案--------------------
Dim sql As String = "begin " & vbCrLf 
sql += "Delete from SDA.SDA_USER where ACCOUNT='" & UID & "';" & vbCrLf 
sql += "Delete from SDA.SDA_USER_ROLE where ACCOUNT='" & UID & "';" & vbCrLf 
sql += "end;"

其中回车换行可以没有。
------解决方案--------------------
应该是可以的,你可以把语句做为字符串,用动态的SQL来写!
------解决方案--------------------
sda_user和sda_user_role建立外键关联关系,并指定ON DELETE CASCADE 的选项。这样在你删除sda_user的时候指定cascade选项,比如:delete from sda.sda_user where account=xx cascade;就可以连带删除了。


引用楼主 lwl0606 的帖子:
ADO.NET VB.NET 2005
我需要删除两个表里面的数据
Dim sql As String = "Delete from SDA.SDA_USER where ACCOUNT='" & UID & "';" & vbCrLf
sql += "Delete from SDA.SDA_USER_ROLE where ACCOUNT='" & UID & "';"

除了两次执行 cmdGetS.ExecuteNonQuery 操作外 ,有没有办法 一次 ExecuteNonQuery 删除两个表的数据
谢谢