我在工作中使用存储过程时遇到问题。
它是一个存储过程,由几个更大的过程使用。完成工作的过程被称为C
,调用它的过程是A
和B
。
我遇到的问题是,当我跑步时A
,一切都很顺利,但是当我跑步时B
,我得到了一个missing expression error
,当我打电话时我没有得到A
,甚至很难B
并且A
有相同的过程调用流程(所以,这是一种真的很奇怪的错误)。
该C
过程具有相同的代码:
procedure C ( LO in varchar2,
EN in varchar2,
CA in array1d,
IA in number,
AR in array2d )
is
CQ varchar2(5);
ET varchar2(2000);
OL varchar2(100);
NE varchar2(100);
TE varchar2(100);
XU varchar2(100);
begin
LO := '05';
TE := 'VAR';
CQ := '''';
OL := CQ || LO || CQ;
TE := CQ || TE || CQ;
NE := CQ || EN || CQ;
ET := 'PAR1 = ' || CA(1) || ',' ||
'PAR2 = ' || CA(2) || ',' ||
'PAR3 = ' || CA(3) || ',' ||
'PAR4 = ' || CA(4) || ',' ||
'PAR5 = ' || CA(5) || ',' ||
'PAR6 = ' || CA(6) || ',' ||
'PAR7 = ' || CA(7) || ',' ||
'PAR8 = ' || CA(8) || ',' ||
'PAR9 = ' || CA(9);
execute immediate 'update table_st set ' || ET || '
where field1 = ' || OL || '
AND field2 = ' || NE || '
AND field3 = ' || TE;
end;
我得到的错误是missing expression
,它似乎出现在execute immediate
. 经过一些分析,我意识到 2d ARRAY 中的数据是用一些空字符串初始化的''
。
我想知道您是否可以帮助我从新的角度看待这个错误,因为在我看来,似乎没有语法错误来证明missing expression error
我得到的正确性,但我知道我可能错了。如果需要更多详细信息,请告诉我。