今天创建存储过程的时候碰到这个报错:

AN unexpected tkoen "END-OF-STATEMENT" was found following "COMMIT",Expected tokens may include:"END IF"..SQLSTATE:-104 SQLCODE:42601

翻译:在“COMMIT”之后发现了一个异常的tkoen“END-OF-STATEMENT”,异常的tkoen 可能包括:“END IF”.SQL状态:-104 SQL代码:42601

报错解释 :

原因分析:

处理方式:

情况一、

情况二、


报错解释 :

SQLSTATE:-104   错误状态码,在 文本 后面找到异常 标记。预期标记可能包括: 标记列表

SQLCODE=42601 错误类代码,含义字符、标记或自居无效或丢失。

用户响应:在指定的标记区域内检查并更正语句。


原因分析:

根据提示找到问题语句所在地方,COMMIT后面也只是一个正常的 IF 判断结束和 存储过程结束而已,并没有什么异常。但是提示还另外补了一句unexpected tkoen "END-OF-STATEMENT" 结束出现了问题。

CREATE OR REPLACE PROCEDURE DROP_VIEW(IN V_NAME VARCHAR(100))
BEGINDECLARE CNT_V INTEGER;DECLARE DROP_SQL VARCHAR(1000);SET CNT_V= (SELECT COUNT(1) FROM SYSCAT.VIEWS WHERE VIEWSCHEMA = TRIM(CURRENT_SCHEMA) AND VIEWNAME = V_NAME);
IF CNT_V <> 0 THEN
SET DROP_SQL = 'DROP VIEW ' || V_NAME;
COMMIT;
END IF;END;

处理方式:

情况一、

按照提示的话我们可以发现问题就出现在存储过程结束的位置,检查结束语句分隔符为“@”;

先进行一波检查  DBeaver 客户端 工具栏 中 【窗口】-->>【首选项】 找到设置语句分隔符的窗口。

基于第一种情况如果正常存储过程的内容没有任何语法问题,应用并关闭后是可以执行成功的。

ps:因为这次我执行创建存储过程实在DBeaver上,底层对应的DB2数据库是基于Linux环境部署的,所以它接受的存储过程 结束语句分隔符为“@” 而并不是常见的 结束语句分隔符“;”。


情况二、

明明已经按照 情况一 的步骤改好了语句分隔符,为什么还是会报SQLSTATE:-104 SQLCODE:42601呢?!主要原因有如下:

  1. 根据提示查看出现报错的位置是否有语法错误。一般存储过程是从上往下执行的。如果有重复的 字眼 ,看第一个出现该 字眼 的位置就好了。
  2. 多个 IF 条件或者其他循环体中 漏了 END IF;有时候 IF 一层套一层的很容易少了的。
  3. SET = ........ 句式后面忘记添加 “;” 作为结束了。因为存储过程中基本每一句后面都要加 “;”,出了 IF.....THEN 还有循环 那些开头外。

其他报错 的原因码以及其他报错的错误状态码可以在下面 IBM 的链接查看。

【DB2报错】创建存储过程报SQLSTATE:-104 SQLCODE:42601相关推荐

  1. SQLSERVER 创建ODBC 报错的解决办法 SQLState:‘01000‘的解决方案

    SQLSERVER 创建ODBC 报错的解决办法 SQLState:'01000'的解决方案 参考文章: (1)SQLSERVER 创建ODBC 报错的解决办法 SQLState:'01000'的解决 ...

  2. 连接DB2报错:ERRORCODE=-4499, SQLSTATE=08001

    连接DB2时遇到报错:ERRORCODE=-4499, SQLSTATE=08001,仔细检查了一下,发现Databse Server是localhost,改成想要连接的数据库服务器地址就能正常连接了 ...

  3. kettle使用mysql作为资源库报错 创建资源库时只有25张表,原本应该46张表。

    kettle使用mysql作为资源库报错 创建资源库时只有25张表,原本应该46张表. 连用户表都没有 ,导致连 默认的 admin和guest都无法登陆自己的资源库!!!! 问题是 SQL语句里边使 ...

  4. SAP MB1B + 313315做二步法货物移动报错-创建交货的数据不完全(客户)-

    SAP MM MB1B + 313&315做二步法货物移动的时候,系统报错 - 创建交货的数据不完全(客户) - 之对策 [问题] [背景] 该项目对于成品是启用了HUM的,所以,当我们把成品 ...

  5. mtk一键usb驱动_三菱MRJEB驱动器报错,导致报错原因37.1参数设置范围异常?

    三菱MR-JE-B驱动器报错,导致报错原因37.1参数设置范围异常?最近海蓝机电工程师们在做一个项目,做的是三菱MR-JE-B驱动器.工程师们在实操这个项目过程中遇到各种问题,其中就像驱动器报错的问题 ...

  6. WIN11从MSDN重新安装后 应用商店打不开 报错 0x80131500 0x00000194 报错 0x80240438

    简单记录下 WIN11从MSDN重新安装后 应用商店打不开 报错 0x80131500 0x00000194 报错 0x80240438 系统刚刚装好 更改TLS无效 WSReset无效 重置应用 关 ...

  7. 使用poi导出excel报错-打开文件报“Excel 已完成文件级验证和修复。此工作簿的某些部分可能已被修复或丢弃”

    使用poi导出excel报错-打开文件报"Excel 已完成文件级验证和修复.此工作簿的某些部分可能已被修复或丢弃" 1.原本正常使用的Excel导出突然下载文件报错 2.定位时发 ...

  8. linux安装xfce4,安装 xfce4 报错 - 安装 xfce4 报错 _Linux教程_Linux公社-Linux系统门户网站...

    安装 xfce4 报错 安装 xfce4 报错 [日期:2007-09-08] 来源:Linux公社 作者:Linuxidc [字体:大 中 小] 前面所有的安装验证均已通过,安装到23%左右会抛出一 ...

  9. Foxmail登陆报错outlook邮箱报错:foxmail,C4 NO LOGIN failed.

    1 事件 Foxmail登陆报错outlook邮箱报错: foxmail,C4 NO LOGIN failed. 2 原因 这是由于outlook邮箱设置了双重验证登陆,foxmail无法弹出验证登陆 ...

最新文章

  1. Windows系统更新问题汇总(补充修改)
  2. linux下查看服务器性能,linux命令查看服务器性能
  3. 【spring boot】 使用 RestTemplate
  4. lenovo Think Centre TCM 开发环境搭建
  5. php6 配置,thinkphp6下载安装与配置图文详细讲解教程(composer下载安装)
  6. LaTeX伪代码写法总结
  7. 计算机病毒正确探讨目录,毕业论文-计算机病毒的正确防御探讨.doc
  8. 计算机网络正掩码怎么计算器,计算机网络课设子网掩码计算器.doc
  9. ARP协议报文格式及ARP表简述
  10. 【历史上的今天】2 月 22 日:Red Hat Enterprise Linux 问世;BASIC 语言作者出生;计算机协会创始人诞生
  11. 计算机网络期末总结复习(全)
  12. 概率论由相关性求数学期望和方差的公式_概率论笔记2--离散随机变量、数学期望和方差...
  13. Linux开启root用户
  14. 360视频:正八面体投影OHP
  15. wps怎么下载仿宋gb2312_仿宋gb2312字体
  16. 中国高端制造进展神速,又一项新科技产品即将取得全球第一!
  17. 重度使用开源技术,网易云要用互联网IT打开企业级市场
  18. bootstrap table表头错位,火狐浏览器下滚动条挤像素问题解决方案。
  19. SPI方式读取汉字字库芯片
  20. CreateDialog和DialogBox的区别,模态对话框与非模态对话框

热门文章

  1. 鲁大师性能测试要装什么软件吗,比鲁大师还好用的硬件检测软件,鲁大师再见!...
  2. 宾夕法尼亚大学在线计算机硕士,Z 同学_宾夕法尼亚大学_计算机_录取成功案例分享...
  3. python基于django幼儿园管理系统
  4. 锁相放大器在TDLAS技术的应用
  5. java Process
  6. 亚马逊美国站自行车16 CFR 1512测试报告、GCC合格证具体要求细则
  7. Ubuntu 14.04安装WPS
  8. 宽刈幅干涉高度计SWOT(Surface Water and Ocean Topography)卫星进展(待完善)
  9. Android ID详解
  10. 新手小白必看!自媒体运营攻略!