PLSQL如何把table类型拼进字符串?

xlchou 2010-03-11 01:30:02
O_GOODS_ARR BASE_CM_OUT_TN_GOODS_SAL_ARR;定义了一个table类型的变量。

由于需要动态拼写sql给游标fetch,现在要把O_GOODS_ARR拼接入一段sql的from子句中,当做表来做连接取数据操作。

例如 V_SQL := 'SELECT XXX FROM XX, ' || O_GOODS_ARR || ' WHERE XXX';

但总是提示类型不正确

假使把他拼入V_SQL := 'SELECT XXX FROM XX, O_GOODS_ARR WHERE XXX';

提示视图不存在

V_SQL := 'SELECT XXX FROM XX, table(O_GOODS_ARR) WHERE XXX'; 依旧不成立

该如何拼写这段sql呢?
...全文
276 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
tangren 2010-03-12
  • 打赏
  • 举报
回复
建议用临时表处理,创建临时表的语句:
create global temporary table my_tmp(id number,....) on commit delete rows;
iqlife 2010-03-11
  • 打赏
  • 举报
回复
SELECT XXX FROM XX, O_GOODS_ARR WHERE XXX
在SQL*PLUS里执行可有报错>?报错说明你本身写的SQL就有问题,拼接出来的当然还是有问题
47522341 2010-03-11
  • 打赏
  • 举报
回复
你在一个session中定义的table变量的有效区间只能是当前session。使用动态sql会新打开一个session执行,所以会提示该表不存在。可以尝试使用下面的思路解决之。
1,你可以建立一个普通表存储,每次执行之前truncate就可以了;
2,或者你可以创建一个全部临时表存储数据。

17,140

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧