我有一个名为task2.sql的SQL函数:
-- script to create function task2
CREATE OR REPLACE Function task2
(input_userid IN integer)
begin
return (select *
from tweet twt
where twt.userid = input_userid
order by publishtime desc, tweetid desc);
END;
/
exit;
我正在尝试返回所有行,目标是将它们写入文本文件。我正在使用java文件来调用此函数并管理结果。我在某处弄乱了语法。任何帮助表示赞赏。
答案 0 :(得分:1)
Oracle功能无法以这种方式执行此操作。要从函数返回行,您应该使用Table Function
(可能有管道)
http://docs.oracle.com/cd/B19306_01/appdev.102/b14289/dcitblfns.htm#CHDCIEJG
但,要将查询包装到程序,我建议您返回SYS_REFCURSOR
CREATE OR REPLACE PROCEDURE task2
(input_userid IN integer, out_cur OUT SYS_REFCURSOR)
begin
OPEN out_cur FOR select *
from tweet twt
where twt.userid = input_userid
order by publishtime desc, tweetid desc;
END;
然后,您应该从应用程序中的out_cur
获取行。这很简单,谷歌和SF充满了这个例子。例如read data from SYS_REFCURSOR in a Oracle stored procedure and reuse it in java