我已經有一個可以正常工作的存儲過程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