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)) 当我实行编译它时,我收到以下错误.
我知道这看起来与其他题目相同,但我不大白语法错误是什么. 办理要领为了在查询的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()函数去除时刻部门也许会有效. (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |