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

IN()子句中的数组oracle PLSQL

发布时间:2020-12-12 13:05:13 所属栏目:百科 来源:网络整理
导读:我将String数组(plcListchar)传递给Stored Procedure,我想在IN()子句中使用此String数组. 我不能直接在IN()子句中使用plcListchar. 让我展示我如何在JAVA中打包plcListchar字符串数组. String array[] = {"o","l"}; ArrayDescriptor des = ArrayDescriptor.c
我将String数组(plcListchar)传递给Stored Procedure,我想在IN()子句中使用此String数组.

我不能直接在IN()子句中使用plcListchar.
让我展示我如何在JAVA中打包plcListchar字符串数组.

String array[] = {"o","l"}; 
 ArrayDescriptor des = ArrayDescriptor.createDescriptor("CHAR_ARRAY",con);
 ARRAY array_to_pass = new ARRAY(des,con,array);            
 callStmtProductSearch.setArray(4,array_to_pass);

为了装箱CHAR_ARRAY,

create or replace type CHAR_ARRAY as table of varchar2;

我想在IN子句中使用plcListchar.以下是我的存储过程.

CREATE OR REPLACE PROCEDURE product_search(
            status IN varchar2,plcList IN varchar2,i_culture_id IN number,plcListchar IN CHAR_ARRAY,status_name OUT  varchar2,culture_code  OUT varchar2)
AS  
    CURSOR search_cursor IS
    SELECT p.status_name,p.culture_code
                FROM PRISM_ITEM_cultures@prism p
                WHERE p.publishable_flag=1 
                AND p.isroll =0 
                AND status = '-1'
                AND p.plc_status IN ( );
 BEGIN
           OPEN search_cursor;
           FETCH search_cursor INTO status_name,culture_code ;
           CLOSE search_cursor;
 END;

你能建议我如何使用,如果你想建议任何其他逻辑,这是伟大的.

假设您的集合是在SQL中定义的,而不仅仅是在PL / SQL中,您可以使用TABLE操作符(您发布的定义在语法上无效 – 您需要为VARCHAR2指定一个长度)
AND p.plc_status IN (SELECT column_value
                       FROM TABLE( plcListchar ))

因为我没有你的表,使用SCOTT模式的例子

SQL> create type ename_tbl is table of varchar2(30);
  2  /

Type created.

SQL> ed
Wrote file afiedt.buf

  1  declare
  2    l_enames ename_tbl := ename_tbl( 'KING','SMITH' );
  3  begin
  4    for i in (select *
  5                from emp
  6               where ename in (select column_value
  7                                 from table( l_enames )))
  8    loop
  9      dbms_output.put_line( 'ENAME = ' || i.ename );
 10    end loop;
 11* end;
SQL> /
ENAME = KING
ENAME = SMITH

PL/SQL procedure successfully completed.

(编辑:李大同)

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

    推荐文章
      热点阅读