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

发布于 2025-01-01 02:39:22 字数 985 浏览 0 评论 0 原文

我编写了两个用于库存和销售比较的 plsql 函数。一个为 find_prodcuts_sold,另一个为 find_usage_from_stock

我可以通过减少 find_usage_from_stock 函数中的 find_prodcuts_sold 函数来获得库存和销售额之间的差异。为此,我应该将 From dateTo date 传递给这两个函数。 (起始日期截止日期取自stock表中的stock_date列)。然后我的函数返回给定日期范围的值。

现在我想使用我的函数创建一个折线图来获得库存和库存之间的差异。图表应该自动构建。无需用户密码起始日期截止日期

stock 表 中的示例stock_date 列。

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

我怎么能这样做?

I have wrote two plsql functions for Stock and Sales Comparison. one as find_prodcuts_sold and other as find_usage_from_stock.

I can get different between stock and sales by decrease find_prodcuts_sold function from find_usage_from_stock function. for this i should pass From date and To date to these two functions. (From date and To date are taken from stock_date column in stock table). then my functions return values for given date range.

Now i want to create a line chart using my functions to get different between stock and slaes. chart should build automatically. with out user pass From date and To date.

Example stock_date column from 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

I want to pass above dates as below to my functions automatically.

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

how could i do this ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

感性 2025-01-08 02:39:22

您可以使用 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

注意:我在 Lead 函数中使用 null 作为空值,也许您需要输入其他内容

You can use LAG or LEAD analytic functions:

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

then use the result of the query for your input, i.e.:

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

Note: I used null as the empty value in the lead function, perhaps you'll need to put something else

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文