加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

oracle – PL / SQL – 如安在IN子句中行使数组

发布时间:2021-01-10 09:50:03 所属栏目:站长百科 来源:网络整理
导读:我试图在IN子句中行使一个输入值数组作为游标的where子句的一部门.我知道之前已经问过,但我还没有看到怎样正确编译语法. 在包类型中,范例是 TYPE t_brth_dt IS TABLE OF sourceTable.stdt_brth_dt%TYPE INDEX BY PLS_INTEGER; sourceTable.std_brth_dt是表中

我试图在IN子句中行使一个输入值数组作为游标的where子句的一部门.我知道之前已经问过,但我还没有看到怎样正确编译语法.

在包类型中,范例是

TYPE t_brth_dt IS TABLE OF sourceTable.stdt_brth_dt%TYPE INDEX BY PLS_INTEGER;

sourceTable.std_brth_dt是表中的日期列.

我的光标的简化版本是在包体中 –

cursor DataCursor_Sort( p_brth_dt in t_brth_dt) is
    SELECT *
      FROM sourceTable 
     WHERE a.brth_dt IN (select column_value 
                           from table(p_brth_dt))

当我实行编译它时,我收到以下错误.

  • [1]:(Error): PLS-00382: expression is of wrong type
  • [2]:(Error): PL/SQL: ORA-22905: cannot access rows from a non-nested table item

我知道这看起来与其他题目相同,但我不大白语法错误是什么.

办理要领

为了在查询的from子句中行使界说为嵌套表或关联数组的荟萃,您应该正如@Alex Poole正确指出的那样,建设模式级别(SQL)范例或行使一个,您可以行使的范例通过ODCIConst包 – odcidatelist,由于您规划行使日期列表.譬喻,您的游标界说也许如下所示:

cursor DataCursor_Sort(p_brth_dt in sys.odcidatelist) is
  select *
    from sourceTable 
   where a.brth_dt IN (select column_value 
                         from table(p_brth_dt))

要么

cursor DataCursor_Sort(p_brth_dt in sys.odcidatelist) is
  select s.*
    from sourceTable      s
    join table(p_brth_dt) t
      on (s.brth_dt = t.column_value)

留意:您应该在执行日期较量时思量日期的时刻部门.假如你只想较量日期部门,那么通过行使trunc()函数去除时刻部门也许会有效.

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读