【问题标题】:Selecting from the result set of a DB2 stored procedure从 DB2 存储过程的结果集中进行选择
【发布时间】:2014-07-17 09:49:12
【问题描述】:

我有一个返回多条记录的存储过程(SP 无法更改,我需要使用我所拥有的)。我想从 Shell 脚本中执行一条 DB2 选择语句,该语句根据如下列数据的组合选择一条记录:

select a.description_column from (call my_stored_proc) a where a.name_column='name_filter' and a.value_column='value_filter';

SP 的结果集中存在description_columnname_columnvalue_column 列。我收到SQLCODE=-727, SQLSTATE=56098, SQLERRMC=2 错误。由于我需要从 Shell 脚本中对其进行排序,并且我只有对数据库的读取权限,因此我无法为此创建其他表。

【问题讨论】:

  • 请问哪个平台/版本的 DB2?另外,你知道存储过程是如何返回行的吗?也就是说,存储过程是如何声明的?列出的错误是 DB2 表示“深入了解”的方式 - 消息还有更多内容吗?
  • 您不能从存储过程返回的结果集中“选择”。您需要编写一些 SQL PL 代码(例如匿名块)来处理它,如 here 所述
  • 我最终根据 SP 的来源编写了一个查询。现在它做了我需要它做的事情。尽管如此,我仍然认为如果 DBMS 能够处理这样的查询会很酷。

标签: sql stored-procedures db2


【解决方案1】:

您无法从 SP 中进行选择。

但是你可以从一个表函数中。

SELECT ... FROM TABLE(<table-function(param1, param2, ..., paramN))) as t WHERE .... 

因此,最简单的方法是要求 DBA 基于源 SP 创建一个表函数。

祝你好运

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-24
    • 1970-01-01
    • 2015-03-06
    • 2017-04-23
    • 1970-01-01
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多