怎样实现 输入表名列名列值 输出 结果集 并将其变成字符串?

[复制链接]
查看11 | 回复3 | 2011-2-18 11:42:49 | 显示全部楼层 |阅读模式
需求是这样的,设计一个函数/过程,参数为三个,p_table_name, p_col_name, p_col_value,输出为类似于
select * from p_table_name where p_col_name = p_col_value
这样一句执行后所得的结果集,并将结果集输出为字符串。
我开始打算把结果集全部装到collection里面去,但是collection的结构不定,貌似得用到ANYDATA,于是没搞定。后来又打算用游标,但是用了sys_refcursor后,直接for loop它报错了,换成fetch into 呢又得找一个record来接受。但是这个record的结构又是不确定的,貌似又得ANYDATA。anydata也不是禁止用,但是我不熟悉不知道具体怎么才能弄出个可用的来。
求教如何实现这样一个需求?

回复

使用道具 举报

千问 | 2011-2-18 11:42:49 | 显示全部楼层
动态sql
回复

使用道具 举报

千问 | 2011-2-18 11:42:49 | 显示全部楼层
〇〇 发表于 2013-3-18 18:14
动态sql

能否具体点呢……
动态SQL是肯定要用的,但是到底用到哪个程度?我理解的动态SQL是在拼装那条select语句时要用到,但这个明显不是问题的关键。问题是,我不知道怎样把查询出来的结果集取出来
回复

使用道具 举报

千问 | 2011-2-18 11:42:49 | 显示全部楼层
ywwow 发表于 2013-3-18 19:16
能否具体点呢……
动态SQL是肯定要用的,但是到底用到哪个程度?我理解的动态SQL是在拼装那条select语 ...

你在拼动态SQL的时候,不但要拼FROM和WHERE,还要拼SELECT里面的东西,把它们变成一个字符串,拼接后就类似这样:
SELECT EMP_ID||','||NAME||','||DEPT||','||TO_CHAR(HIRE_DATE,'YYYY-MM-DD')||....... AS STR
FROM EMP
然后你就可以FETCH了,因为它只有一个输出列叫做STR。
为了拼这个SQL你得访问USER_TAB_COLUMNS
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行