首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OCI文档表示,游标和嵌套表具有相同的绑定类型SQLT_RSET,但它们没有

OCI文档表示,游标和嵌套表具有相同的绑定类型SQLT_RSET,但它们没有
EN

Stack Overflow用户
提问于 2013-09-15 21:08:03
回答 1查看 432关注 0票数 0

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时如何将嵌套值作为返回值传递或接收的示例。

在我开枪之前请帮帮我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-16 10:04:50

如果仔细研究示例,可以看到与cursor()函数一起使用的嵌套表。例如。

代码语言:javascript
复制
static const text *nst_tab = (text *)
       "SELECT last_name, CURSOR(SELECT department_name, location_id \
        FROM  departments)  FROM employees WHERE last_name = 'FORD'";

你问题的关键部分是

代码语言:javascript
复制
CURSOR(SELECT department_name, location_id FROM  departments)

其中departments是一个嵌套表。

因此,如果需要使用嵌套表作为游标,则需要将其作为select并转换为游标类型。

对于PL/SQL集合变量,如果她的记录类型是在数据库模式级别上定义的,则可以将其转换为表,然后从表中选择获得游标:

代码语言:javascript
复制
declare
  vMyTable TMyTableType;
  vCursor  sys_refcursor;
begin
  -- populate table with values ...

  open vCursor for (
    select * from table(vMyTable);
  );

  :OutCursorParameter := vCursor;
end;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18817506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档