未經測試的水域,我試圖找到一種方法來緩解事情。而不是在PL-SQL中的遊標中嵌套選擇。我想在遊標中創建一個案例。由於遊標可以有不同的參數,我需要相應地分類。在光標下的情況
這可能嗎?我的代碼看起來像這樣。很容易閱讀ao_in是Inparam。
PROCEDURE theProcedure (ao_in IN VARCHAR2)
CURSOR order_cur
IS
Case when ao_in = 'NIEC'
then
SELECT t1.nr, t1.status$nr
FROM [email protected]_DBLINK t1
WHERE t1.status$nr IN (3, 6)
AND ao_in =
DECODE (ao_in, 'NIEC', ao_in, get_ehorder_ao (t1.nr))
AND t1.nr = DECODE (order_in, NULL, t1.nr, order_in)
ORDER BY t1.skapad_dat ASC;
when ao_in = 'DSSP' then
SELECT t1.nr, t1.status$nr
FROM [email protected]_DBLINK t1
WHERE t1.status$nr IN (3, 6)
AND ao_in =
DECODE (ao_in, 'DSSP', ao_in, get_ehorder_ao (t1.nr))
AND t1.nr = DECODE (order_in, NULL, t1.nr, order_in)
ORDER BY t1.skapad_dat ASC;
when ao_in = 'ALLA'
SELECT t1.nr, t1.status$nr
FROM [email protected]_DBLINK t1
WHERE t1.status$nr IN (3, 6)
AND ao_in =
DECODE (ao_in, 'ALLA', ao_in, get_ehorder_ao (t1.nr))
AND t1.nr = DECODE (order_in, NULL, t1.nr, order_in)
ORDER BY t1.skapad_dat ASC;
end
ao_in是對過程的參數。它也是桌子上的一列嗎?因爲如果不是,我不會看不到你想要做什麼的邏輯。 – Rene
你不能使用'case'來運行不同的語句。 (SQL)情況只能用於返回單個(列)值。你需要三個光標,然後當你打開光標時,你需要檢查參數並打開正確的參數。 –
@ahorsewithnoname聯盟所有和檢查參數值的條件是什麼?-) –