sitemap

RSS地图

收藏本站

设为首页

Oracle研究中心

当前位置:Oracle研究中心 > 开发DBA >

【学习笔记】Oracle数据库使用绑定变量值生成源SQL语句

时间:2016-10-27 10:42   来源:Oracle研究中心   作者:HTZ   点击:

天萃荷净 Oracle研究中心学习笔记:分享一篇关于Oracle数据库SQL语句绑定变量的案例,使用绑定变量值生成源SQL语句步骤方法。

set lines 200
set pages 20000
set verify off
set serveroutput on size 1000000
undefine sqlid;

DECLARE
LVC_SQL_TEXT VARCHAR2(32000);
LVC_ORIG_SQL_TEXT VARCHAR2(32000);
LN_CHILD NUMBER := 10000;
LVC_BIND VARCHAR2(200);
LVC_NAME VARCHAR2(30);
CURSOR C1 IS
SELECT CHILD_NUMBER, NAME, POSITION, DATATYPE_STRING, VALUE_STRING
— add
,sql_id
— add end
FROM V$SQL_BIND_CAPTURE
WHERE SQL_ID = ‘&&sqlid’
ORDER BY CHILD_NUMBER, POSITION;
BEGIN
SELECT SQL_FULLTEXT
INTO LVC_ORIG_SQL_TEXT
FROM V$SQL
WHERE SQL_ID = ‘&&sqlid’
AND ROWNUM = 1;
FOR R1 IN C1 LOOP
IF (R1.CHILD_NUMBER <> LN_CHILD) THEN
IF LN_CHILD <> 10000 THEN
DBMS_OUTPUT.PUT_LINE(LVC_NAME);
DBMS_OUTPUT.PUT_LINE(LVC_SQL_TEXT); Oracle о
DBMS_OUTPUT.PUT_LINE(‘——————————————————–‘);
END IF;
LN_CHILD := R1.CHILD_NUMBER;
LVC_SQL_TEXT := LVC_ORIG_SQL_TEXT;
END IF;

— add
select parsing_schema_name into LVC_NAME from v$sql where sql_id=r1.sql_id and child_number=r1.CHILD_NUMBER;
— add end

IF R1.NAME LIKE ‘:SYS_B_%’ THEN
LVC_BIND := ‘:"’||substr(R1.NAME,2)||’"’;
ELSE
LVC_BIND := R1.NAME;
END IF;

IF r1.VALUE_STRING IS NOT NULL THEN
IF R1.DATATYPE_STRING = ‘NUMBER’ THEN
LVC_SQL_TEXT := REGEXP_REPLACE(LVC_SQL_TEXT, LVC_BIND, R1.VALUE_STRING,1,1,’i’);
ELSIF R1.DATATYPE_STRING LIKE ‘VARCHAR%’ THEN
LVC_SQL_TEXT := REGEXP_REPLACE(LVC_SQL_TEXT, LVC_BIND, ””||R1.VALUE_STRING||””,1,1,’i’);
ELSE
LVC_SQL_TEXT := REGEXP_REPLACE(LVC_SQL_TEXT, LVC_BIND, ””||R1.VALUE_STRING||””,1,1,’i’);
END IF;
ELSE
LVC_SQL_TEXT := REGEXP_REPLACE(LVC_SQL_TEXT, LVC_BIND, ‘NULL’,1,1,’i’);
END IF;
END LOOP;
DBMS_OUTPUT.PUT_LINE(LVC_NAME);
DBMS_OUTPUT.PUT_LINE(LVC_SQL_TEXT);
END;
/

undefine sqlid

本文固定链接: http://www.htz.pw/2014/07/07/%e5%b8%b8%e7%94%a8%e8%84%9a%e6%9c%ac5%ef%bc%9a%e7%bb%91%e5%ae%9a%e5%8f%98%e9%87%8fsql%e8%af%ad%e5%8f%a5%ef%bc%8c%e4%bd%bf%e7%94%a8%e7%bb%91%e5%ae%9a%e5%8f%98%e9%87%8f%e5%80%bc%e7%94%9f%e6%88%90.html | 认真就输

--------------------------------------ORACLE-DBA----------------------------------------

最权威、专业的Oracle案例资源汇总之【学习笔记】Oracle数据库使用绑定变量值生成源SQL语句

本文由大师惜分飞原创分享,网址:http://www.oracleplus.net/arch/1083.html

Oracle研究中心

关键词:

如何绑定变量SQL语句

使用绑定变量值生成源SQL语句案例