- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PLSQL中怎样获取未知结构的动态游标〔REFCURSOR〕的字段名
PLSQL中怎样获取未知结构的动态游标的字段名对于使用过 ORACLE PLSQL 中的动态游标的人来说,我相信有不少人都会有这样的想法:如果对于任意一个给定的未知结构的游标(REF CURSOR),我们都能够在PLSQL中获取它的所有字段的名称,那该多好啊!不知道你是否有这样的想法,反正我早就有这样的想法了,也百度了多次,但结果不尽人意。曾经一度以为,这是不可能的。但是PLSQL Developer中的test 窗口中,可以打开任意游标并得到字段名及值。很显然,还是有办法得到未知结构的动态游标的字段名的,只是我不知道方法而已。今天早上心血来潮,又想到这个事情,于是google了一下(用英文查询:how to get column names from oracle cursor),发现还真有办法获取未知结构的动态游标!看来在这方面百度还是太弱啊!技术问题还是得问google。整理之后,结论如下:1、如果给的是一个查询SQL文本,那么事情很容易(对于9i及以上版本),只要使用dbms_sql.open_cursor打开游标,再使用dbms_sql.describe_columns即可得到游标的所有字段名称及类型等数据,存储在一个集合类型变量中(具体请看dbms_sql.desc_tab)。请参考如下PLSQL代码:DECLAREl_curidINTEGER;l_cntNUMBER;l_desctabdbms_sql.desc_tab;l_sqltextVARCHAR2(2000);BEGINl_sqltext := select owner,object_type,object_name from dba_objects where rownum = 10;--可以是任意有效的查询sql文本l_curid := dbms_sql.open_cursor();dbms_sql.parse(l_curid, l_sqltext, dbms_sql.native);dbms_sql.describe_columns(l_curid, l_cnt, l_descTab);FOR i IN1 ..l_desctab.countLOOPdbms_output.put(lpad(l_desctab(i).col_name, 20));ENDLOOP;dbms_output.new_line;dbms_sql.close_cursor(l_curId);END;运行结果如下:OWNER OBJECT_TYPE OBJECT_NAME 注意,必须使用 DBMS_SQL.OPEN_CURSOR 打开游标,否则,就不是这种处理方法了。2、如果给的是一个REF CURSOR类型变量,而不知道SQL文本,该怎么办呢?这里分两种情况:如果数据库版本是11g及以上,同样很容易:使用dbms_sql.to_cursor_number(cursor)得到游标的ID,再使用dbms_sql.describe_columns即可得到游标字段名称。参考如下代码:DECLARETYPEref_cursorISREFCURSOR;l_cursorref_cursor;l_curidNUMBER;l_col_cntNUMBER;l_desc_tab DBMS_SQL.DESC_TAB;BEGINOPENl_cursorFORselect owner,object_type,object_name from dba_objects where rownum = 10;l_curid := DBMS_SQL.to_cursor_number(l_cursor); DBMS_SQL.DESCRIBE_COLUMNS(l_curid, l_col_cnt, l_desc_tab);FOR i_ IN1 ..l_col_cntLOOP DBMS_OUTPUT.PUT_LINE(l_desc_tab(i).col_name);ENDLOOP; DBMS_SQL.CLOSE_CURSOR(l_cursor);END;如果数据库版本低于11g,则PLSQL中仅有如下方法可以获取字段名称及字段值:DECLAREl_cursorSYS_REFCURSOR;iNUMBER := 0;CURSORget_columnsISSELECT t2.column_value.getrootelement() NAME,EXTRACTVALUE(t2.column_value, node()) VALUEFROM (SELECT * FROMTABLE(XMLSEQUENCE(l_cursor))) t1,TABLE(XMLSE
您可能关注的文档
- led发光字招牌的介绍及制作方法.docx
- LED外露发光字穿孔灯生产技术及制作工艺要求分享–字工场.docx
- LED和LCD液晶显示屏的区别.doc
- LED显示屏行业现〔并购潮)港上市公司拟控股三升高.doc
- LED显示屏PCB设计重要性.doc
- LED灯具调光电源设计–任务书.doc
- LED电路基础和常用远件的用途.doc
- lesson9简单句扩展﹒Convertor.doc
- LG型立式螺杆泵–上海阳光泵业.docx
- KS–767II沙冰机冰沙机LY–989现磨商用豆浆机沙冰机.docx
- 重庆新速达物业服务集团股份凯里公司招聘笔试题库2024.pdf
- 浙江杭州千岛湖泰众肉类食品有限公司招聘笔试题库2024.pdf
- 陕西新华出版传媒集团新华书店分公司招聘笔试题库2024.pdf
- 宁夏海原县肉牛产业发展集团有限公司招聘笔试题库2024.pdf
- 浙江温岭市化工轻工建筑材料有限公司招聘笔试题库2024.pdf
- 中航飞机汉中航空零组件制造有限公司招聘笔试题库2024.pdf
- 山东海阳市海昇矿产资源开发有限公司招聘笔试题库2024.pdf
- 山东潍坊寿光市公共交通运输有限公司招聘笔试题库2024.pdf
- 内蒙古察右前旗农业投资开发有限公司招聘笔试题库2024.pdf
- 线上清明祭英烈活动策划.pptx
最近下载
- 分布式光伏发电接入系统典型设计.pdf
- 2023年《普通心理学》考试复习题库(浓缩500题)(含答案).pdf VIP
- AReviewofEmotionRegulation情绪调节研究综述.PDF
- 徐州市社区卫生服务中心名单2021版170家(中心50家+站120家).docx VIP
- 踝关节扭伤精品.ppt VIP
- 青海省西宁市2020-2021学年七年级下学期期末数学试题(word版,含答案).doc VIP
- 2024云南省招聘社区工作者考试题.docx VIP
- 01B人教版新起点一年级下册单词表衡水体字帖(一起点).pdf
- 消毒供应室中心2023院感考试试题.pdf VIP
- 备战辽宁高考——考数学复习制胜法则.doc
文档评论(0)