主要说明RETURNPIPELINED,经验者请绕道。最近我得到了一个需求:要求为method传入String,内容如用户ID0,用户ID1,用户ID2...,然后根据这些ID返回一个结果集作
正好ORACLE方面博客还没有这方面内容,趁此机会便写一小段。
既然我们要返回一个结果集,那便是要得到一个TABLE OF XXX类型,XXX可以是VARCHAR2或者INTEGER或者某个表的%ROWTYPE,但我的情况稍微复杂一点,我要自己创建一个OBJECT TYPE。
于是我们要写的FUNCTION的RETURN类型是这样创建的:CREATE OR REPLACE TYPE TYP_USER_RECORD AS OBJECT (USER_ID CHAR(40),USER_NUM VARCHAR2(200),CREATE_DATE DATE);
CREATE OR REPLACE TYPE TYP_USER_TBL AS TABLE OF TYP_USER_RECORD;
下面是FUNCTION的创建:CREATE OR REPLACE FUNCTION REGROUP_USER_BY_USERIDSTR(USERIDSTR IN VARCHAR2)
RETURN TYP_USER_TBL
PIPELINED IS
--参数声明开始
TYPE USER_CURSOR IS REF CURSOR;
USER_INFO_LIST USER_CURSOR;
--用来获得检索结果的CURSOR
TYPE USER_ROW IS RECORD(
USER_ID CHAR(40),USER_NUM VARCHAR2(200),CREATE_DATE DATE);
USER_INFO USER_ROW;
--用于提取CURSO