SQL函数的语法,在变量和返回中

时间:2015-04-16 10:58:37

标签: sql oracle function

我有一个名为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文件来调用此函数并管理结果。我在某处弄乱了语法。任何帮助表示赞赏。

1 个答案:

答案 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