Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在OraclePL/SQL中传递逗号分隔的字符串并对其进行迭代以执行查询?_C#_Oracle_Plsql_Oracle11g - Fatal编程技术网

C# 如何在OraclePL/SQL中传递逗号分隔的字符串并对其进行迭代以执行查询?

C# 如何在OraclePL/SQL中传递逗号分隔的字符串并对其进行迭代以执行查询?,c#,oracle,plsql,oracle11g,C#,Oracle,Plsql,Oracle11g,我有一个Idstring的列表。 我想从中删除记录,如下所示: DELETE FROM MyTable WHERE ID=:Id 但是,我不想重复给DB打电话;而是希望将Id集合作为逗号分隔的字符串传递,并在Oracle服务器上一次性执行上述查询 我们将非常感谢您的帮助 提前感谢。使用逗号分隔的列表,您可以使用如下函数拆分ID: select regexp_substr(:id,'[^,]+',1,level) element from mytable connect

我有一个Idstring的列表。 我想从中删除记录,如下所示:

DELETE FROM MyTable WHERE ID=:Id
但是,我不想重复给DB打电话;而是希望将Id集合作为逗号分隔的字符串传递,并在Oracle服务器上一次性执行上述查询

我们将非常感谢您的帮助


提前感谢。

使用逗号分隔的列表,您可以使用如下函数拆分ID:

  select regexp_substr(:id,'[^,]+',1,level) element
      from mytable
    connect by level <= length(regexp_replace(:id,'[^,]+')) + 1
最后一个问题是:

DELETE FROM MyTable WHERE ID in ( select regexp_substr(:id,'[^,]+',1,level) element
                                   from mytable
                                 connect by level <= length(regexp_replace(:id,'[^,]+')) + 1)

其中是来自的值列表,您在哪里从另一个PL/SQL块执行命令;JAVAPHP;Pro*C;其他地方?它来自我的C代码,字符串Id=纽约、巴黎、雅加达;像这样。嗯,不确定C。你可以传递数组和;对于C,我认为这可能取决于您使用的驱动程序,但我没有这方面的经验-可能会为您指明正确的方向。。。实际上,您希望绑定一个嵌套的表集合,然后可以将表集合运算符与联接或语法成员一起使用。请注意,逗号分隔的列表在SQL/PL/SQL中不是一个东西,并且没有内置的拆分/联接函数。您最好按照@AlexPoole的建议传递一个实际的集合。