例如
select t.* from tab t 
where t.aaa in para1请问plsql中这个para1参数如何定义和赋值?

解决方案 »

  1.   

    它应该是个集合,包括一个或者多个值
    举例说明:
    select t.* from tab t  
    where t.aaa in ('1', '2', '3');
      

  2.   

    如果是存储过程的话,你在定义变量的地方就可以定义para1这个参数
    例如:para1 VARCHAR2(256):= 'AAA'
    或者你在写存储过程的时候,当个参数传进来
    例如:CREATE OR REPLACE PROCEDURE 存储过程名(para1) is....不知道,是不是你想要的结果
      

  3.   

    是我问题没表述清楚,是这样的
    我想要这样的条件
    where t.aaa in ('1', '2', '3')
    但括号里是动态的,所以我想写成
    where t.aaa in para1
    所以我想问para1如何定义?直接用varchar2好像不行
      

  4.   

    是不是用类似java的程序来调用这个存储过程,还是存储过程调用存储过程麻烦你把大概的流程说一下可以吗
      

  5.   

    是java程序来调用,para1是传递过来的,用作in语句后面的参数
      

  6.   

    在java里、调用的时候传入参数不可以吗?
    调用的是存储过程还是SQL
      

  7.   

    存储过程中要用动态sql,例如:
    create or replace procedure pro_test(para1 in varchar2)
    as
    v_sql varchar2(2000);
    begin
    v_sql:='select t.* from tab t';
    v_sql:=v_sql||' where t.aaa in '||para1;
    execute immediate v_sql;
    end;
      

  8.   

    para1 in varchar2(……)
    select t.* from tab t  
    where t.aaa in 
    (
    select * from(select regexp_substr(para1||',','[^,]+',1,rownum) from a
    connect by rownum<=length(regexp_replace(para1||',','[^,]+')))
    )