Oracle 执行长SQL

  遇到非常长的SQL语句无法执行该怎么办呢?看下面的解决办法:

/*-----------------------------------
|执行长SQL,如参数、值非常大
----------------------------------------*/
CREATE OR REPLACE PROCEDURE SP_EXECUTELOG(SSQL IN VARCHAR2, SLONG IN CLOB) IS
BEGIN
  EXECUTE IMMEDIATE SSQL
    USING SLONG;
  COMMIT;
END SP_EXECUTELOG;



--使用方式
CREATE TABLE TEMPTABLE
(
 ID NUMBER,
 STR CLOB
)

--------------示例1,普通方式----------------------------
BEGIN
SP_EXECUTELOG('INSERT INTO TEMPTABLE(ID,STR) VALUES(1,:STR)',TO_CLOB('14'));
END;


--------------示例2,引号嵌套类型----------------------------
DECLARE 
 SQLSTR VARCHAR2(32767):='UPDATE T_TABLE
   SET INETWORKTYPE_ID      = 1,
       SWHERERULES_CN       = '''',
       IUSERID              = 2804,
       DUPDATEDATE          = TO_DATE(''2012-04-19'', ''YYYY-MM-DD''),
       SPERFTYPE            = ''PERF_GSMCELL'',
       SSQL                 = :STR
 WHERE STEMPLATEID = ''37606''';
 VAL CLOB:=TO_CLOB('SELECT TO_CHAR(DDATE, '''' YYYY '''') Y
  FROM TABLE
 WHERE DDATE >= (SYSDATE - INTERVAL '''' 1 '''' YEAR)');

BEGIN
SP_EXECUTELOG(SQLSTR,VAL);
END;

 

posted on 2012-04-19 19:40  ToKens  阅读(559)  评论(0编辑  收藏  举报