从函数调用存储过程

时间:2017-02-09 14:08:36

标签: sql function stored-procedures db2 return-value

我有以下存储过程:

CREATE OR REPLACE PROCEDURE SEARCH_SELECT (IN searchKey varchar(30), OUT id INT, OUT cmd VARCHAR(1024), OUT attr CHAR(10))

LANGUAGE SQL
READS SQL DATA 
    DYNAMIC RESULT SETS 1
BEGIN
    DECLARE result_set_1 CURSOR WITH RETURN TO CLIENT FOR
        SELECT id, cmd, attr FROM test.commandtbl c WHERE c.attr = searchKey;   
    OPEN result_set_1;
END!

我想从以下函数中调用它:

CREATE OR REPLACE FUNCTION select_selector (param VARCHAR(3))
RETURNS TABLE (id INT, CMD VARCHAR(1024), ATTR CHAR(10))
LANGUAGE SQL 
READS SQL DATA 

EXTERNAL ACTION 
BEGIN

  call SEARCH_SELECT(param);

 END!

原因是我需要像使用函数那样将结果调用为表格,即

select * from table(select_selector('a'))

而不是一个程序

call SEARCH_SELECT('a')

我怎样才能让它发挥作用?

这里的问题是如何使用函数内的参数调用存储过程并获得与存储过程返回的结果相同的结果,因此我可以像表一样调用该过程。

0 个答案:

没有答案