当前位置:首页 > 知识经验 > 正文内容

ORACLE游标与动态SQL结合使用

作者: 葛屹肃 | 日期: 2023-12-11 | 分类: 知识经验

近日,有一个需求,需要使用动态字段查询更方便。

表名T_PARA,数据如下:

要求:根据线号(LINEX)查询出参数

实现方式:根据线号的传参动态生成SQL进行查询

实例:

CREATE OR REPLACE PROCEDURE GET_LINE_PARA
————————————————-
–功    能: 动态SQL测试
–修改日期: 2023-12-11
————————————————-
(
I_LINE         IN  VARCHAR2,  — 输入线号
O_PARA         OUT VARCHAR2   — 输出参数
) AS

TYPE T_CUR IS REF CURSOR;
V_CUR_TABLE T_CUR;
V_CUR_TEMP T_CUR;
TEMP_SQL               VARCHAR2(4000);
TEMP_PARA              VARCHAR2(30);
TEMP_LINE              VARCHAR2(30);
BEGIN
IF I_LINE IN (‘LINE1′,’LINE2′,’LINE3′) THEN
O_PARA := I_LINE || ‘:’;
– 串连SQL
TEMP_SQL := ‘SELECT SEQ,’ || I_LINE ||’ FROM T_PARA ORDER BY SEQ’;
– 游标处理
OPEN V_CUR_TABLE FOR TEMP_SQL;
LOOP
FETCH V_CUR_TABLE INTO TEMP_PARA,TEMP_LINE;
EXIT WHEN V_CUR_TABLE%NOTFOUND;
– 处理每一行数据
O_PARA := O_PARA || ‘,’ || ‘(‘ ||TEMP_PARA || ‘)’ || TEMP_LINE;
END LOOP;
CLOSE V_CUR_TABLE;
ELSE
O_PARA := NULL;
END IF;
EXCEPTION
WHEN OTHERS THEN
BEGIN
IF V_CUR_TABLE%ISOPEN THEN
CLOSE V_CUR_TABLE;
END IF;
END;
END;

 

测试结果:

以上是ORACLE游标与动态SQL结合使用简单例子,在ORACLE 11版本上测试通过。

版权声明:本文由〖葛屹肃〗发布,转载请注明出处!
文章链接:https://www.geyisu.com/3330.html

  • 评论:(0)

已有 0 位网友发表了一针见血的评论,你还等什么?

◎欢迎大家参与讨论