2024年5月9日发(作者:)
PLSQL中怎样获取未知结构的动态游标的字段名
对于使用过 ORACLE PLSQL 中的动态游标的人来说,我相信有不少人都会有这样的
想法:如果对于任意一个给定的未知结构的游标(REF CURSOR),我们都能够在PLSQL
中获取它的所有字段的名称,那该多好啊!不知道你是否有这样的想法,反正我早就有这
样的想法了,也百度了多次,但结果不尽人意。曾经一度以为,这是不可能的。但是PLSQL
Developer中的test 窗口中,可以打开任意游标并得到字段名及值。很显然,还是有办
法得到未知结构的动态游标的字段名的,只是我不知道方法而已。
今天早上心血来潮,又想到这个事情,于是google了一下(用英文查询:how to get
column names from oracle cursor),发现还真有办法获取未知结构的动态游标!看来在
这方面百度还是太弱啊!技术问题还是得问google 。
整理之后,结论如下:
1、如果给的是一个查询SQL文本,那么事情很容易(对于9i及以上版本),只要使
用dbms__cursor打开游标,再使用dbms_be_columns 即可得到游
标的所有字段名称及类型等数据,存储在一个集合类型变量中(具体请看
dbms__tab)。请参考如下PLSQL代码:
DECLARE
l_curid INTEGER;
l_cnt NUMBER;
l_desctab dbms__tab;
l_sqltext VARCHAR2(2000);
BEGIN
l_sqltext := 'select owner,object_type,object_name from dba_objects where
rownum <= 10'; --可以是任意有效的查询sql文本
l_curid := dbms__cursor();
dbms_(l_curid, l_sqltext, dbms_);
dbms_be_columns(l_curid, l_cnt, l_descTab);
FOR i IN 1 .. l_
LOOP
dbms_(lpad(l_desctab(i).col_name, 20));
END LOOP;
dbms__line;
dbms__cursor(l_curId);
发布评论