我有以下存储过程:
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')
我怎样才能让它发挥作用?
这里的问题是如何使用函数内的参数调用存储过程并获得与存储过程返回的结果相同的结果,因此我可以像表一样调用该过程。