0

我正在使用Oracle Sql Developer编写一个存储过程,它接受由“,”(动态 sql )分隔的值列表,并在“ in ”子句中使用此变量从表中触发查询。

但我最终遇到了一个错误

@p_case_nbr       varchar2(100),

错误(4,5):PLS-00103:在预期以下情况之一时遇到符号“@”:当前删除之前存在

使用的 SP:

    create or replace
procedure TEST_PROC
(   
    @p_case_nbr       varchar2(100),
    p_out_case_nbr    out varchar2 
)
as
  cursor test_cur is
      select t.COLUMN1
      from test_table t
      where t.column1 in (@p_case_nbr);

      test_cur_line  test_cur%ROWTYPE;
begin

p_out_case_nbr := null;

  open test_cur;
    LOOP
      FETCH test_cur INTO test_cur_line;
      EXIT WHEN test_cur%NOTFOUND;

      p_out_case_nbr := p_out_case_nbr || ' ' || test_cur_line.COLUMN1;
      dbms_output.put_line(test_cur_line.COLUMN1);

   end loop;
  close test_cur; 

  dbms_output.put_line('Final Value ' || p_out_case_nbr);
  dbms_output.put_line('SP Completed Succesfully');
end;
4

1 回答 1

0

ORACLE不需要在变量之前给出只需@尝试@从指定的@p_case_nbr位置删除并再次尝试,也不需要像@p_case_nbr varchar2(100) 给出一样指定参数的大小@p_case_nbr varchar

于 2013-04-01T12:47:41.590 回答