我已经有一个可以正常工作的存储过程procedureA(int)
。我需要从select语句的行被送入一个接一个进入procedureA从procedureB
,它看起来像以下:将'select int'结果循环并将其传递给另一个过程
create or replace procedure procedureB is
begin
for x in (
select CAST(n as int)
from table1)
loop
procedureA(x);
end loop;
end;
我得到循环内的以下错误:
PLS-00306: wrong number or types of arguments in call to 'procedureA'
即使'n'是一个整数,我也使用了CAST,因为我认为这个错误是因为我必须将选择结果CAST作为一个int。 (甚至在使用CAST之前也会得到相同的错误)。
错误是抱怨您发布的代码段中不存在的符号。这让我相信你发布的代码与你使用的代码并不匹配。你正在循环中调用'procedureB',但是你说你想在你的循环中调用'procedureA'。而你正在引用伪字符'x',而不是你需要的特定属性。但是这些都不会导致你声称会收到的错误。 –
'x'将是一个记录变量,而不是一个int。所以你需要使用'x.col_name'来访问* actual *列值 - 但是因为你没有赋予'cast'表达式的别名,所以列的名字没有真正定义。 –
@JustinCave是的,我确实需要修改代码并使其通用。此外,错误发生的原因是我试图做'x:= x + 1'来检查我是否得到一个整数并意外发布了该错误消息。我将发布原始错误消息。 – dexterityrules