请教,ORACLE中SQL语句最大长度是多少

如题所述

你好:我知道的是最大可执行长度为6000个字符。通常在procedure中sql拼接的时候会有这个问题,一边解决方案是设置function对逻辑分别处理来实现减少sql长度的。

    VAR_DYNAMIC_SQL := 'INSERT INTO RP_TRANS_LOG_MINUTE
      (
        TRANS_TIME,
        TRANS_PROVINCE,
        TRANS_TYPE,
        SCORE_RANGE,
        RULE_NAME,
        POLICY_ACTION,
        /*新加字段开始*/
        CHALLENGE_SUCCESSFUL,
        CHALLENGE_AUTH_METHOD,
        PRIORITY,---
        DESCRIBE,--
        IS_USE_DEVICE,--
        TRANS_DITCH,
        TRANS_OPER_SYSTEM,
        TRANS_BROWSER,
        FLAGGED,
        RESOLUTION,
        /*新加字段结束*/
        TRANS_NUM,
        TRIGGERED_NUM,
        TRIGGERED_SUCCESSFUL_NUM,
        /*新加字段开始*/
        WEB_TRANS_NUM,
        MOBILE_TRANS_NUM,
        IPAD_TRANS_NUM,
        QA_LOGIN_NUM,
        SMS_LOGIN_NUM,
        CC_LOGIN_NUM,
        REGISTRAR_QA_NUM,--***
        CREATE_CUSTOMR_FILE_NUM,
        ALLOW_TRANS_NUM,
        REVIEW_TRANS_NUM,
        CHALLENGE_TRANS_NUM,
        DENY_TRANS_NUM,
        TOTAL_SCORE_RANGE,
        TOTAL_AMOUNT
        /*新加字段结束*/
      )
      SELECT
      TO_DATE(SUBSTR(TO_CHAR(SYS_CREATION_DATE,''YYYY-MM-DD HH24:MI:SS''),0,16),''YYYY-MM-DD HH24:MI''),
      get_province(IP_COUNTRY,IP_CITY,ip_region) AS TRANS_PROVINCE,
      GET_NAME_BY_CODE(GET_TOTAL_EVENT_TYPE(T.EVENT_TYPE,T.USER_DEFINED_EVENT_TYPE),''eventType'') AS TRANS_TYPE,
      GET_SCORE_RANGE(T.RISK_SCORE) AS RISK_SCORE_RANGE,
      NVL(POLICY_RULE_ID,''FALLBACK_RULE'') AS RULE_NAME,
      POLICY_ACTION,
      CHALLENGE_SUCCESSFUL,
      CHALLENGE_AUTH_METHOD,
      SUBSTR(GET_RULE_ORDER_ID(ORG_ID,POLICY_RULE_ID),0,INSTR(GET_RULE_ORDER_ID(ORG_ID,POLICY_RULE_ID),''+'')-1),--优先级
      SUBSTR(GET_RULE_ORDER_ID(ORG_ID,POLICY_RULE_ID),INSTR(GET_RULE_ORDER_ID(ORG_ID,POLICY_RULE_ID),''-'')+1),--描述
      NVL(IS_DEVICE_BOUND,''N''),
      CHANNEL_INDICATOR,
      OPERATING_SYSTEM,
      BROWSER_TYPE,
      FLAGGED,
      RESOLUTION,
      COUNT(1) AS TRANS_NUM,
      SUM(CASE WHEN POLICY_ACTION = ''CHALLENGE''  THEN 1 ELSE 0 END) AS TRIGGERED_NUM,
      SUM(CASE WHEN POLICY_ACTION = ''CHALLENGE'' AND CHALLENGE_SUCCESSFUL = ''Y'' THEN 1 ELSE 0 END) AS TRIGGERED_SUCCESSFUL_NUM,
      SUM(case WHEN CHANNEL_INDICATOR = ''WEB'' then 1 else 0 end ) AS WEB_TRANS_NUM,--WEB交易量
      SUM(case WHEN CHANNEL_INDICATOR = ''MOBILE'' then 1 else 0 end ) AS MOBILE_TRANS_NUM,--Mobile交易量
      SUM(case WHEN '||get_vale_from_cd1('6','4')||' = ''IPAD'' then 1 else 0 end ) AS IPDA_TRANS_NUM,--Ipad交易量
     (SELECT SUM(CASE WHEN T1.ACSPNAME = ''QUESTION'' AND T1.STATUS = ''ACTIVE'' THEN 1 ELSE 0 END) FROM ACSPUSERACCOUNT T1 WHERE TO_DATE(to_char( T1.lastmodified,''yyyy-mm-DD HH24:MI:SS'' ),''yyyy-mm-DD HH24:MI:SS'') >  TO_DATE('''||TO_CHAR(VAR_BEGIN_TIME,'YYYY-MM-DD HH24:MI:SS')||''',''YYYY-MM-DD HH24:MI:SS'') AND TO_DATE(to_char( T1.lastmodified,''yyyy-mm-DD HH24:MI:SS'' ),''yyyy-mm-DD HH24:MI:SS'') <=  TO_DATE('''||TO_CHAR(VAR_END_TIME,'YYYY-MM-DD HH24:MI:SS')||''',''YYYY-MM-DD HH24:MI:SS'')  )AS QA_LOGIN_NUM,
      (SELECT SUM(CASE WHEN T1.ACSPNAME = ''SMS'' AND T1.STATUS = ''ACTIVE'' THEN 1 ELSE 0 END) FROM ACSPUSERACCOUNT T1  WHERE TO_DATE(to_char( T1.lastmodified,''yyyy-mm-DD HH24:MI:SS'' ),''yyyy-mm-DD HH24:MI:SS'') >  TO_DATE('''||TO_CHAR(VAR_BEGIN_TIME,'YYYY-MM-DD HH24:MI:SS')||''',''YYYY-MM-DD HH24:MI:SS'') AND TO_DATE(to_char( T1.lastmodified,''yyyy-mm-DD HH24:MI:SS'' ),''yyyy-mm-DD HH24:MI:SS'') <=  TO_DATE('''||TO_CHAR(VAR_END_TIME,'YYYY-MM-DD HH24:MI:SS')||''',''YYYY-MM-DD HH24:MI:SS''))AS SMS_LOGIN_NUM,
      (SELECT SUM(CASE WHEN T1.ACSPNAME = ''CCC'' AND T1.STATUS = ''ACTIVE'' THEN 1 ELSE 0 END) FROM ACSPUSERACCOUNT T1  WHERE TO_DATE(to_char( T1.lastmodified,''yyyy-mm-DD HH24:MI:SS'' ),''yyyy-mm-DD HH24:MI:SS'') >  TO_DATE('''||TO_CHAR(VAR_BEGIN_TIME,'YYYY-MM-DD HH24:MI:SS')||''',''YYYY-MM-DD HH24:MI:SS'') AND TO_DATE(to_char( T1.lastmodified,''yyyy-mm-DD HH24:MI:SS'' ),''yyyy-mm-DD HH24:MI:SS'') <=  TO_DATE('''||TO_CHAR(VAR_END_TIME,'YYYY-MM-DD HH24:MI:SS')||''',''YYYY-MM-DD HH24:MI:SS''))AS CC_LOGIN_NUM,
      ''11111'',
      (SELECT COUNT(USERNAME) FROM USERS T2 WHERE  T2.CREATED >= TO_DATE( '''||TO_CHAR(VAR_BEGIN_TIME,'YYYY-MM-DD HH24:MI:SS')||''',''YYYY-MM-DD HH24:MI:SS'')
      AND T2.CREATED <= TO_DATE('''||TO_CHAR(VAR_END_TIME,'YYYY-MM-DD HH24:MI:SS')||''',''YYYY-MM-DD HH24:MI:SS'')  ) AS CREATE_CUSTOMR_FILE_NUM ,
      SUM(CASE WHEN POLICY_ACTION = ''ALLOW'' then 1 else 0 end ) as ALLOW_TRANS_NUM,
      SUM(CASE WHEN POLICY_ACTION = ''REVIEW'' then 1 else 0 end ) as REVIEW_TRANS_NUM,
      SUM(CASE WHEN POLICY_ACTION = ''AHALLENGE'' then 1 else 0 end ) as CHALLENGE_TRANS_NUM,
      SUM(CASE WHEN POLICY_ACTION = ''DENY'' then 1 else 0 end ) as DENY_TRANS_NUM,
      SUM(RISK_SCORE) AS TOTAL_SCORE_RANGE,
      SUM(GET_AMT_BY_CURRENCY(AMOUNT_ORIGINAL,AMOUNT_CURRENCY)) AS TOTAL_AMOUNT--通过汇率表和币种转换再求和
      FROM EVENT_LOG_REALTIME T
      WHERE SYS_CREATION_DATE >= TO_DATE('''||TO_CHAR(VAR_BEGIN_TIME,'YYYY-MM-DD HH24:MI:SS')||''',''YYYY-MM-DD HH24:MI:SS'') AND SYS_CREATION_DATE <=  TO_DATE('''||TO_CHAR(VAR_END_TIME,'YYYY-MM-DD HH24:MI:SS')||''' ,''YYYY-MM-DD HH24:MI:SS'')
      AND HAS_USED = ''T''
      AND T.HAS_USED_TIME=T.LASTMODIFIED
      GROUP BY
      TO_DATE(SUBSTR(TO_CHAR(SYS_CREATION_DATE,''YYYY-MM-DD HH24:MI:SS''),0,16),''YYYY-MM-DD HH24:MI''),
      get_province(IP_COUNTRY,IP_CITY,ip_region) ,
      GET_NAME_BY_CODE(GET_TOTAL_EVENT_TYPE(T.EVENT_TYPE,T.USER_DEFINED_EVENT_TYPE),''eventType'') ,
      GET_SCORE_RANGE(T.RISK_SCORE) ,
      NVL(POLICY_RULE_ID,''FALLBACK_RULE'') ,
      POLICY_ACTION,
      CHALLENGE_SUCCESSFUL,
      CHALLENGE_AUTH_METHOD,
      SUBSTR(GET_RULE_ORDER_ID(ORG_ID,POLICY_RULE_ID),0,INSTR(GET_RULE_ORDER_ID(ORG_ID,POLICY_RULE_ID),''+'')-1),--优先级
      SUBSTR(GET_RULE_ORDER_ID(ORG_ID,POLICY_RULE_ID),INSTR(GET_RULE_ORDER_ID(ORG_ID,POLICY_RULE_ID),''-'')+1),--描述
      NVL(IS_DEVICE_BOUND,''N''),
      CHANNEL_INDICATOR,
      OPERATING_SYSTEM,
      BROWSER_TYPE,
      FLAGGED,
      RESOLUTION ';
     -- insert into test (test_name) values(VAR_DYNAMIC_SQL);
      --insert into test (test_name) values(TO_CHAR(VAR_BEGIN_TIME));
      --insert into test (test_name) values(TO_CHAR(VAR_END_TIME));
     -- commit;
      execute immediate VAR_DYNAMIC_SQL;

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-10-30
这个没有意义、、、
第2个回答  2014-10-30
没有限制。。。
第3个回答  2014-10-30
没有这个说法的吧。有的就是参数里面可以规定字符的长度

请教,ORACLE中SQL语句最大长度是多少
你好:我知道的是最大可执行长度为6000个字符。通常在procedure中sql拼接的时候会有这个问题,一边解决方案是设置function对逻辑分别处理来实现减少sql长度的。VAR_DYNAMIC_SQL := 'INSERT INTO RP_TRANS_LOG_MINUTE ( TRANS_TIME, TRANS_PROVINCE, TRANS_TYPE, SCORE_RANGE, RULE_NAM...

如何调整oracle中的sql语句输入的最大长度
Oracle SQL 语句in长度不得超过1000 IN 子句中的LIST个数最长为1000,超过该数目将报错,这里可转用一个临时表来解决;CREATE TRIGGER语句文本的字符长度不能超过32KB(触发器中不能使用LONG, LONG RAW 类型;触发器内可以参照LOB 类型列的列值,但不能通过 :NEW 修改LOB列中的数据;)顺便说一下,触发...

oracle动态执行SQL字符串,字符串最大的长度是多少
长度是4000

在SQLServer中,单条SQL语句的最大长度是多少?
我们平时写的ORACLE报表,最长的语句有2千多行的,一行几十个字符。普通的都几十行到几百行。

SQL语句中别名的长度多大?
oracle的sql语句的别名的长度最大能到30个字符

Oracle执行超长SQL的存储过程问题
sql_cursor varchar2(8000);varchar2 最大长度为4000, 写8000肯定不行。你可以写两个varchar2,一个 4000,然后连接起来执行,可以的 ...v_sql_cursor varchar1(4000);v_sql_cursor varchar2(4000);begin execute immediate v_sql_cursor1 || v_sql_cursor2;这样连接,就成了8000了 ...

oracle中列表中的最大表达式数为 1000
参数2:需要IN的列名;public string GetSqlIn( string sqlParam, string columnName ){ int width = sqlParam.IndexOf( "'", 1 ) - 1;string temp = string.Empty;for( int i = 0; i < sqlParam.Length; i += 1000 * ( width + 3 ) ){ if( i + 1000 * ( width + 3 ) ...

比较oracle数据类型和pl\/sql数据类型,它们的区别是什么
比较 字符数据类型 CHAR CHAR :都是固定长度字符资料但oracle里面最大度为2kb,SQLServer里面最大长度为8kb 变长字符数据类型 VARCHAR2 VARCHAR :racle里面最大长度为4kb,SQLServer里面最大长度为8kb 根据字符集而定的固定长度字符串 NCHAR :NCHAR 前者最大长度2kb后者最大长度4kb...

ORACLE中SQL语句最大长度是多少
这个的限制还真的没有找过,不过根据我所知道的,如果是直接写的sql语句,那么与运行的内存有关系。因为解析需要内存,最终的限制也是内存。不过一般来说几千字符的sql语句问题都不大。

oracle sql查询中用in列表中最大表达式数大于1000的处理
oracle sql查询中用in列表中最大表达式数大于1000时,会报异常! 我是从数据库中: String sql= "select student_number from student",查询后学号中的数据存入List集合中: List listString = JdbcTemplate.queryForList(sql); sql查询出来后的数据studen... 展开 xiao...

相似回答