Oracle SQL 删除位于 Array/CArray/DataStructure 中的值

Oracle SQL Delete values located in Array/CArray/DataStructure

本文关键字:CArray DataStructure Array SQL 删除 Oracle      更新时间:2023-10-16

我有带有ID的CArray/CMap。
在SQL表上有:ID,值,开始时间,结束时间。
我收到开始时间和结束时间,需要删除该 CA 上显示的所有 ID。
因此,需要查询,例如:
"从 id 在 ( 列表[0], 列表[1], 列表 [2] 中的表中删除。...列表[n])和T1和T2之间的时间"
我的问题是如何实现"in (..)"如何传输 CArray 上的 ID?

将 CDatabase.executeSQL(QUERY) 与 CommitTrans 和 CommitTrans 一起使用

谢谢

你可以做的简单事情是这样的(前提是你有CArray,它被称为arId):

CString sql, item;
sql = _T("delete from table where id ");
if(arId.GetCount() == 1)
{
  item.Format(_T(" = %d"), arId[0]);
  sql += item;
}
else
{
  for(int i = 0; i < arId.GetCount(); ++i)
  {
    if(i == 0) sql += _T("IN (");
    item.Format(_T("%d"), arId[0]);
    if(i == arId.GetCount()-1)
      item += _T(")");
    else
      item += _T(", ");
    sql += item;
  }
}
CDatabase.executeSQL(sql);

对于 CMap,将 for(i = 0;...) 替换为 POSITION pos = mapId.GetStartPosition() 等。