未经测试的水域,我试图找到一种方法来缓解事情。而不是在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联盟所有和检查参数值的条件是什么?-) –