【问题标题】:SQL execute SP using parameters from tableSQL 使用表中的参数执行 SP
【发布时间】:2016-06-06 19:00:21
【问题描述】:

我有一个存储过程,我可以像这样执行:

exec Clientinvoicing_BackUPReports @HeadofficeclientinvoiceID = 9, @Outletid = 208,  @ReportStartdate =  '2015-23-01', @ReportEnddate = '2015-19-02'

我希望能够使用表格中的参数。我的表有以下字段

Rownumber, HeadofficeclientinvoiceID,  Outletid, ReportStartdate, ReportEnddate 

我还想为表中的每一行运行存储过程。表中有 20 条记录(行号 20)

【问题讨论】:

  • 在这种情况下,您必须使用Cursor
  • 提供你已经尝试过的东西..
  • 您使用的是什么关系型数据库?请适当标记:Oracle、SQL Server、...

标签: sql stored-procedures parameter-passing


【解决方案1】:

您可以编写调用存储过程的函数。因此,您需要定义一个获取表值参数并执行存储过程的函数。评估查询中的函数。

示例函数:

FUNCTION total_comp
   (salary_in IN employee.salary%TYPE, bonus_in IN employee.bonus%TYPE)
   RETURN NUMBER
IS
BEGIN
   RETURN salary_in + NVL (bonus_in, 0);
END;

示例用法:

SELECT employee_name, total_comp (salary, bonus)
  FROM employee;

Source.

您也可以通过使用 cursor 迭代表行来做到这一点。

【讨论】:

  • 是否有替代方法。我被告知使用 sql 作为字符串可能是一种选择。
  • @Abbaskhan,你可以这样做,但它太老套了。我向您展示了两种不同的解决方案。
猜你喜欢
  • 2011-09-30
  • 1970-01-01
  • 2017-12-25
  • 1970-01-01
  • 2014-02-12
  • 2011-01-18
  • 1970-01-01
  • 2017-05-08
  • 1970-01-01
相关资源
最近更新 更多