自动将参数传递给oracle plsql函数

时间:2012-01-31 05:38:05

标签: oracle function plsql oracle10g oracle-apex

我为股票和销售比较写了两个plsql functions。一个为find_prodcuts_sold,另一个为find_usage_from_stock

我可以通过find_prodcuts_sold函数减少find_usage_from_stock函数来区分库存和销售。为此,我应该将From dateTo date传递给这两个函数。 (From dateTo date取自stock_date表格中的stock列。然后我的函数返回给定日期范围的值。

现在我想使用我的函数创建一个line chart来获得股票和板条之间的差异。图表应自动构建。没有用户通过From dateTo date

来自stock_date的示例stock table列。

stock_date

30-JAN-12
26-JAN-12
24-JAN-12
23-JAN-12
18-JAN-12
15-JAN-12
13-JAN-12
12-JAN-12
11-JAN-12
08-JAN-12
06-JAN-12

我想自动将以上日期传递给我的函数。

From        To
26-JAN-12   30-JAN-12
24-JAN-12   26-JAN-12
23-JAN-12   24-JAN-12
18-JAN-12   23-JAN-12
15-JAN-12   18-JAN-12
13-JAN-12   15-JAN-12
12-JAN-12   13-JAN-12
11-JAN-12   12-JAN-12
08-JAN-12   11-JAN-12
06-JAN-12   08-JAN-12

我怎么能这样做?

1 个答案:

答案 0 :(得分:2)

您可以使用LAGLEAD分析函数:

select stock_date, lead(stock_date, 1, null) over (order by stock_date) next_date
from stock_table

然后使用查询结果输入,即:

SELECT find_usage_from_stock(t.product_id, t.start_date, t.end_date) as usage_from_stock, 
       find_prodcuts_sold(t.product_id, t.start_date, t.end_date) as prodcuts_sold, 
       t.product_id, t.start_date
FROM (select stock_date as start_date, 
             lead(stock_date, 1, null) over (order by stock_date) as end_date, 
             product_id
      from stock_table) t

注意:我在前导函数中使用null作为空值,也许你需要放其他东西