我使用下面的查詢返回一個值:甲骨文返回遊標在表中的所有行儘管where子句
select er.elig_code
from idm_elig_rule er
where ER.ROLE_CODE = role_code and ER.SERVICE_CODE = service_code;
當我替換值變量並運行它作爲一個單一的SQL語句將返回只是像我想要的那樣一個單一的價值。但是,當我將該語句放在遊標中並循環遍歷結果時,它將返回表中的所有行。我也嘗試了「select into」語句,但仍然返回表中的所有85行。我在idm_elig_rule表中有一個唯一的索引,它是role_code,service_code和另一列的組合。
編輯:這就是我如何測試它 - 使用匿名塊:
declare
role_code_in IDM_ELIG_RULE.ROLE_CODE%type := 'CEMP';
service_code_in IDM_ELIG_RULE.SERVICE_CODE%type := 'PORTL';
cursor get_elig_code is
select ER.ELIG_CODE
from idm_elig_rule er
where ER.ROLE_CODE = role_code_in and ER.SERVICE_CODE = service_code_in;
begin
for r in get_elig_code
loop
DBMS_OUTPUT.PUT_LINE(r.elig_code);
end loop;
end;
編輯:我改變了變量的名稱在where子句中,並且解決了問題。
您確定遊標中使用的參數(role_code和service_code)在執行時是否具有正確的值? (例如,您可以使用dbms_output打印出數值還是以其他方式驗證它們?) – 2012-02-07 14:19:28
顯示如何循環顯示結果 – tbone 2012-02-07 14:21:05
繁榮!剛剛添加了我的答案,其他兩個同時進來。我認爲他們都說同樣的事實應該告訴你你的答案! – Ollie 2012-02-07 14:25:37