使用heidilsql执行sql时,遇到错误,怎么跳过继续执行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用heidilsql执行sql时,遇到错误,怎么跳过继续执行相关的知识,希望对你有一定的参考价值。

帮助下一个提问的人,两点:1.运行下拉选择“逐个发送查询” 2.感叹号图标“批处理模式下出错时停止”按钮抬起状态

参考技术A @错误控制操作符可以实现这样的功能。
@符号可以忽略错误,有抑制错误的功能。

例如:

function db_connect()//连接数据库

@$db =mysql_connect('localhost','root','test');
if(!$db)
throw new Exception('连接数据库失败!请重试!');

mysql_select_db('book');
return $db;


如果连接数据库不成功的,前面的“@”就能把错误显示给抑制住,也就是不会显示错误,然后再抛出异常,显示自己定义的异常处理,建议最好少用,这样会增加一定的系统开销。

通过过程执行时 SQL 语句不起作用

【中文标题】通过过程执行时 SQL 语句不起作用【英文标题】:SQL Statement not working when executed through procedure 【发布时间】:2017-09-14 15:52:07 【问题描述】:

尝试通过过程执行以下查询。

当我在 toad 中使用单引号手动运行查询时,查询运行良好,但在运行过程时遇到错误。

      v_sql :=
         'INSERT /*+ APPEND parallel(p,8)*/
         INTO NDWMTR_REF_PHARM_RX_MTH 
               (week_id,
               PHARMACY_SEQ_NBR,
               SUPPLIER_ID,
               FINAL_STATUS_CD,
               NDW_DATA_USE_QLFR_CD,
               CMF_OTLT_NBR,
               CMF_OTLT_HIST_NBR,
               CLAIM_CNT)
         Select /*+ PARALLEL (8)*/
         case  
         when TRIM(TO_CHAR(rx.SVC_DT, ''DAY'')) = ''FRIDAY''
         THEN CAST(TO_CHAR(rx.SVC_DT, ''YYYYMMDD'') as NUMBER(8))
         ELSE CAST(TO_CHAR(NEXT_DAY(rx.SVC_DT,''FRIDAY''),''YYYYMMDD'') as NUMBER(8)) 
         END WEEK_ID,
         rx.pharmacy_seq_nbr,
         rx.supplier_id,
         rx.final_status,
         rx.ndw_data_use_qlfr_cd,                                                       
         NVL(ph.CMF_OTLT_NBR,00000000) as CMF_OTLT_NBR,
         NVL(rx.cmf_otlt_nbr,00000000) as cmf_otlt_hist_nbr,
         count(rx.claim_id) as CLAIM_CNT
      FROM
      rx_fact_hdr rx
      left outer JOIN V_PHARM_STORE_SEQNO_XREF ph 
      ON rx.pharmacy_seq_nbr = ph.PHARMACY_SEQ_NBR
      where 
         case  
         when TRIM(TO_CHAR(rx.SVC_DT, ''DAY'')) = ''FRIDAY'' 
         THEN CAST(TO_CHAR(rx.SVC_DT, ''YYYYMMDD'') as NUMBER(8))
         ELSE CAST(TO_CHAR(NEXT_DAY(rx.SVC_DT,''FRIDAY''),''YYYYMMDD'') as NUMBER(8)) 
         END = ''g_week_id''
      group by 
         case  
         when TRIM(TO_CHAR(rx.SVC_DT, ''DAY'')) = ''FRIDAY'' 
         THEN CAST(TO_CHAR(rx.SVC_DT, ''YYYYMMDD'') as NUMBER(8))
         ELSE CAST(TO_CHAR(NEXT_DAY(rx.SVC_DT,''FRIDAY''),''YYYYMMDD'') as NUMBER(8)) 
         END,
      rx.pharmacy_seq_nbr,
      rx.supplier_id,
      rx.final_status,
      rx.ndw_data_use_qlfr_cd,
      ph.cmf_otlt_nbr,
      rx.cmf_otlt_nbr';

EXECUTE IMMEDIATE v_sql;

ORA-00907: 缺少右括号

【问题讨论】:

【参考方案1】:

您可以使用以下方法避免重复 '

v_sql := q'

   your-query-that-works-directly-in-TOAD-editor

';

Rextester demo

更多信息:Text Literals

【讨论】:

@KiranDas 如果您的问题已经解决,您可以接受我的回答 (meta.stackexchange.com/questions/5234/…) :) @KiranDas 请发布您的具体错误信息。 “不工作”太笼统了。

以上是关于使用heidilsql执行sql时,遇到错误,怎么跳过继续执行的主要内容,如果未能解决你的问题,请参考以下文章

sqlserver安装时失败,提示遇到以下错误:未将对象引用设置到对象的实例。这个是啥意思?要怎么解决?

执行查询时,我在 wampserver MySql 5.7.14 中遇到与 sql_mode=only_full_group_by 相关的错误

在 Dbeaver 中遇到 SQL 错误 40001

执行 .sql 文件时如何获取 oracle 错误

sql2005数据库只能执行查询语句不能执行删除语句是怎么回事啊,请问有没有遇到这个问题的朋友,执行delete

安装sql server 2005时提示“安装时发生严重错误”