01/appdev.101/b10779/oci05bnd.htm#422771
OCI中的PL/SQL引用游标和嵌套表
说SQLT_RSET被传递给dty参数。
如果我使用SQLT_RSET作为返回表的函数的返回值,并为OCI参数数据指针传递语句句柄的地址,我希望语句句柄将被实例化,这是执行函数的结果,我可以在函数上进一步执行fetch,类似于游标。但它抛出异常PLS-00382:表达式类型错误或06550:第2行,第3列。上述文档错误吗?
从OCI头文件中,我看到对于varray和嵌套表,它提到使用SQLT_NCO。在OCI文档中,我找不到在使用SQLT_NCO时如何将嵌套值作为返回值传递或接收的示例。
在我开枪之前请帮帮我。
发布于 2013-09-16 10:04:50
如果仔细研究示例,可以看到与cursor()函数一起使用的嵌套表。例如。
static const text *nst_tab = (text *)
"SELECT last_name, CURSOR(SELECT department_name, location_id \
FROM departments) FROM employees WHERE last_name = 'FORD'";你问题的关键部分是
CURSOR(SELECT department_name, location_id FROM departments)其中departments是一个嵌套表。
因此,如果需要使用嵌套表作为游标,则需要将其作为select并转换为游标类型。
对于PL/SQL集合变量,如果她的记录类型是在数据库模式级别上定义的,则可以将其转换为表,然后从表中选择获得游标:
declare
vMyTable TMyTableType;
vCursor sys_refcursor;
begin
-- populate table with values ...
open vCursor for (
select * from table(vMyTable);
);
:OutCursorParameter := vCursor;
end;https://stackoverflow.com/questions/18817506
复制相似问题