我寫了一個SQL函數,它接受一個參數並返回Table類型。從原始sql查詢聲明Rails模型
SQL函數 -
create or replace function get_some_data (p_val in number)
return my_tab_type_coll pipelined as
begin
FOR i in (select final_test_tb.*, PERIOD_BETWEEN_TWO_DATES(
FROM_TZ(CAST(from_date AS TIMESTAMP), 'UTC'),
FROM_TZ(CAST(to_date AS TIMESTAMP), 'UTC') as period
from (
select dl.id, dl.trip_id, dl.address, dl.from_date, dl.avg_speed, dl.high_speed,
case when tmp = 2 and nvl(lead(avg_speed) over (order by received_at asc), 1) = 0
then lead(to_date) over (order by received_at asc)
else to_date end to_date, tmp
from (
select test.*, case when avg_speed <> 0 then 1
when nvl(lag(avg_speed) over (order by received_at asc), 1) <> 0 then 2
when nvl(lead(avg_speed) over (order by received_at asc), 1) <> 0 then 3
end tmp
from test
where foo_id = p_val) dl
where tmp is not null) final_test_tb
where tmp in (1, 2)) loop
pipe row(my_tab_type(i.id, i.foo_id,
i.avg_speed, i.high_speed, i.distance, i.address_en, i.from_date, i.to_date));
end loop;
return;
end;
在這裏,我已經創建了兩個類型,即行類型 - my_tab_type &表型-my_tab_type_coll
在拿使用SQL命令的記錄=>
select * from TABLE(get_some_data(10003));
是否可以使用此功能構建導軌模型? 因此,可以爲該模型/表應用過濾器和分頁。
顯示該功能。 –
@SergioTulentsev - 請檢查。我添加了SQL函數,它返回Table類型。 – kd12
我不明白如何通過一個原始的'return;'返回一個函數。那是那個奇怪的SQL,還是隻是我?重點是:嘗試構建最簡單的可能的函數,返回一些明顯的東西。在這之上工作要容易得多。然後,您可以用更高級的東西替換該簡單的功能並應用建議的解決方案。 –