我正在使用 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;
答案 0 :(得分:0)
在ORACLE
中,无需在变量之前提供@
只需尝试从指定的@
移除@p_case_nbr
,然后再试一次
而且也不需要像@p_case_nbr varchar2(100)
那样指定参数的大小
只需给@p_case_nbr varchar