【问题标题】:How to select only rows where a column value is present in an associative array?如何仅选择关联数组中存在列值的行?
【发布时间】:2012-03-12 06:29:02
【问题描述】:

我可以使用

IEnumerable 传递给 PLSQL 过程

Oracle.DataAccess.Client.OracleParameter

它显然将其转换为关联数组。

我想要做的是获取一个现有查询并将其包装在一个选择中,以便最终在集合中的唯一行是包含作为数组中的项目之一存在的值的行。

它的语法是什么?

SELECT ... WHERE IN 的变体可以解决问题吗?

【问题讨论】:

  • 如果您知道如何为 IEnumerable 执行此操作,那么数组不会是一样的吗?
  • 也许这个例子有帮助? asktheoracle.net/…
  • @Magnus 我想你误解了我的意思。我所知道的是 IEnumerable 被转换为关联数组。我不知道如何使用该数组进行 WHERE IN。

标签: .net oracle plsql oracle10g ienumerable


【解决方案1】:

如果您能找到一种方法将 IEnumerable 转换为下面的示例使用 TABLE() Function and Column_value 的嵌套表,那么您将可以使用。 在架构级别创建嵌套表类型。

Create type ntt is table of NUMBER ;

还有一个示例代码:

declare
  nt ntt := ntt(1, 2); --:= (1,2);
begin
  for i in (select rownum as id
                  from all_objects
         where rownum in (select column_value from TABLE(nt))) LOOP
 DBMS_OUTPUT.PUT_LINE('HERE IS = ' || i.id);
 END LOOP;
END;

输出是:

HERE IS = 1
HERE IS = 2

您还可以从 plsql 块内的关联数组填充嵌套表类型。这是我知道在WHERE .. IN 子句中使用集合元素的方式

【讨论】:

    猜你喜欢
    • 2015-11-15
    • 2021-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-21
    • 1970-01-01
    • 2011-07-09
    相关资源
    最近更新 更多