我正在尝试简化一些sql .. 现在我正在做以下作为例子
SELECT
*
FROM
test_table
WHERE
test_table.apples in
(
SELECT
condition
FROM
lookup_table
WHERE
lookup_table.condition1="blah1"
AND
lookup_table.condition2="blah2"
AND
lookup_table.condition3="blah3"
)
我要做的是用带参数的函数替换我的子查询 例如
lookup('parameter1','paramater2','paramiter3')..
我不确定我需要返回什么数据类型..一个varray ..一个表.. 我只想要这个函数来模拟子查询。 任何帮助将不胜感激!
谢谢!
答案 0 :(得分:4)
您是考虑过观点还是subquery factoring clause而不是创建函数?函数可能会产生不良的性能影响,而优化程序很容易评估视图和CTE。
答案 1 :(得分:2)
你需要创建一个这样的类型:
create type mytabtype is table of varchar2(100);
然后你的函数可以返回那个类型,你会像这样使用它:
SELECT
*
FROM
test_table
WHERE
test_table.apples in (SELECT column_value
FROM TABLE(lookup('parameter1','paramater2','paramiter3'));