循环 Sys_Refcursor:在游标和 INTO 变量之间发现类型不匹配
Looping Through Sys_Refcursor: Type Mismatch Found Between Cursor and INTO Varaiables
我有一个 returns 一个 Sys_Refcursor 的函数。它看起来像这样:
Open l_cursor For
Select b.balance + b.arrears arrears_bucket
,b.levy + b.penalty levy_bucket
,b.supplementary_levy supp_bucket
,b.other_balance + b.other_penalty other_bucket
,b.arrears_balance + b.arrears_penalty + b.levy_balance + b.levy_penalty calculated_balance
From balances b
Where b.id = p_id;
Return l_cursor;
我有另一个函数,我想在其中调用上面的函数,并循环遍历它。它看起来像这样:
Cursor l_cursor Is
Select balance_sel(p_id) From dual;
l_result1 Number;
l_result2 Number;
l_result3 Number;
l_result4 Number;
l_result5 Number;
Begin
Loop
Fetch l_cursor into l_result1, l_result2, l_result3, l_result4, l_result5;
EXIT WHEN l_cursor%notfound;
End Loop;
但我一直收到错误消息:
Error: PLS-00386: type mismatch found at 'L_RESULT1' between FETCH cursor and INTO variables
Line: 316
Text: Fetch l_cursor into l_result1, l_result2, l_result3, l_result4, l_result5;
我正在将数字提取为数字,那么不匹配是怎么回事?我该如何解决?
这看起来应该很简单,但我很茫然。
谢谢。
我认为你的问题出在光标的使用上。
声明一个 sys_refcursor 类型的变量并保存函数的结果
declare
l_cursor Sys_Refcursor;
l_result1 Number;
l_result2 Number;
l_result3 Number;
l_result4 Number;
l_result5 Number;
Begin
...
l_cursor := balance_sel(p_id);
Loop
Fetch l_cursor into l_result1, l_result2, l_result3, l_result4, l_result5;
EXIT WHEN l_cursor%notfound;
End Loop;
end;
/
我有一个 returns 一个 Sys_Refcursor 的函数。它看起来像这样:
Open l_cursor For
Select b.balance + b.arrears arrears_bucket
,b.levy + b.penalty levy_bucket
,b.supplementary_levy supp_bucket
,b.other_balance + b.other_penalty other_bucket
,b.arrears_balance + b.arrears_penalty + b.levy_balance + b.levy_penalty calculated_balance
From balances b
Where b.id = p_id;
Return l_cursor;
我有另一个函数,我想在其中调用上面的函数,并循环遍历它。它看起来像这样:
Cursor l_cursor Is
Select balance_sel(p_id) From dual;
l_result1 Number;
l_result2 Number;
l_result3 Number;
l_result4 Number;
l_result5 Number;
Begin
Loop
Fetch l_cursor into l_result1, l_result2, l_result3, l_result4, l_result5;
EXIT WHEN l_cursor%notfound;
End Loop;
但我一直收到错误消息:
Error: PLS-00386: type mismatch found at 'L_RESULT1' between FETCH cursor and INTO variables
Line: 316
Text: Fetch l_cursor into l_result1, l_result2, l_result3, l_result4, l_result5;
我正在将数字提取为数字,那么不匹配是怎么回事?我该如何解决? 这看起来应该很简单,但我很茫然。
谢谢。
我认为你的问题出在光标的使用上。
声明一个 sys_refcursor 类型的变量并保存函数的结果
declare
l_cursor Sys_Refcursor;
l_result1 Number;
l_result2 Number;
l_result3 Number;
l_result4 Number;
l_result5 Number;
Begin
...
l_cursor := balance_sel(p_id);
Loop
Fetch l_cursor into l_result1, l_result2, l_result3, l_result4, l_result5;
EXIT WHEN l_cursor%notfound;
End Loop;
end;
/