[英]Oracle SQL: how to pass parameter to a function that is used in a view through a column in a view?
假設我們有這樣的視圖,它使用帶有硬編碼參數的 function:
CREATE OR REPLACE VIEW x AS
SELECT t.some_value
FROM table(function(p1 => '1')) t;
如果我想通過視圖將該參數傳遞給 function,有哪些可能的選項? 請注意,不能選擇使用全局或上下文/綁定變量。 到目前為止,我想出了一個選項來使用一個包含所有可用參數值(鍵)的表,這些參數值(鍵)可以傳遞給視圖:
CREATE OR REPLACE VIEW x AS
SELECT st.input_param,
t.some_value
FROM some_table st
table(function(p1 => st.input_param)) t;
但是,我想知道是否還有其他可能的選擇?
您不能將參數傳遞給視圖,但可以使用下一個替代方法:
CREATE TYPE RECORDS_VARCHAR AS TABLE OF VARCHAR2(100);
create or replace function virtual_table( input_param number )
return RECORDS_VARCHAR
PIPELINED
is
begin
FOR a IN (
select '1' AS VALUE from dual where input_param = 2
UNION ALL
select '8' AS VALUE from dual
) loop
pipe row (a.VALUE);
end loop;
return;
end;
SELECT * FROM TABLE(virtual_table(2)); --1,8
SELECT * FROM TABLE(virtual_table(1)); --8
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.