欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

求教~存储过程脚本实施不了

更新时间: 2014-01-05 02:24:10 责任编辑: Author_N1

 

求教~存储过程脚本执行不了
下面存储过程编译都过不去,很奇怪 ~~~,本存储过程是用datastudio工具建的,建好了也能运行,不过脚本导出后在执行就老是报错......


CREATE PROCEDURE "DB2ADMIN"."PROC_INITELGUSER"  ()
LANGUAGE SQL
BEGIN
      --拿出来是可以执行的
      UPDATE ELGUSER A SET CURRENTSTAT = 0 WHERE NOT EXISTS (SELECT 1 FROM BASE_USER_INFO B WHERE  A.ID = B.USER_ID);
      --拿出来是可以执行的
      MERGE INTO ELGUSER AS EU  
      USING BASE_USER_INFO AS BUI  
      ON EU.ID=BUI.USER_ID  
      WHEN MATCHED THEN UPDATE SET EU.FULLNAME=BUI.NAME,EU.DEPTID=BUI.DEPT1_NO,EU.GOVID=BUI.DEPT2_NO,EU.CURRENTSTAT='1',EU.EMAIL=EU.ID||'1'
      WHEN NOT MATCHED THEN INSERT VALUES (BUI.USER_ID,BUI.USER_ID,'96e79218965eb72c92a549dd5a330112',BUI.NAME,BUI.DEPT1_NO,BUI.DEPT2_NO,'N','1',BUI.USER_ID||'1','');
END;


错误如下:
---------------------------------------------------
CREATE PROCEDURE "DB2ADMIN"."PROC_INITELGUSER"  ()
LANGUAGE SQL
BEGIN
      UPDATE ELGUSER A SET CURRENTSTAT = 0 WHERE NOT EXISTS (SELECT 1 FROM BASE_USER_INFO B WHERE  A.ID = B.USER_ID)
DB21034E  该命令被当作 SQL 语句来处理,因为它是无效的“命令行处理器”命令。在
SQL 处理期间,它返回:
SQL0104N  在 "E  A.ID = B.USER_ID)" 后面找到异常标记
"END-OF-STATEMENT"。预期标记可能包括:"<psm_semicolon>"。  LINE NUMBER=4. 
SQLSTATE=42601

MERGE INTO ELGUSER AS EU USING BASE_USER_INFO AS BUI ON EU.ID=BUI.USER_ID WHEN MATCHED THEN UPDATE SET EU.FULLNAME=BUI.NAME,EU.DEPTID=BUI.DEPT1_NO,EU.GOVID=BUI.DEPT2_NO,EU.CURRENTSTAT='1',EU.EMAIL=EU.ID||'1' WHEN NOT MATCHED THEN INSERT VALUES (BUI.USER_ID,BUI.USER_ID,'96e79218965eb72c92a549dd5a330112',BUI.NAME,BUI.DEPT1_NO,BUI.DEPT2_NO,'N','1',BUI.USER_ID||'1','')
DB20000I  SQL 命令成功完成。

END
DB21034E  该命令被当作 SQL 语句来处理,因为它是无效的“命令行处理器”命令。在
SQL 处理期间,它返回:
SQL0104N  在 "END" 后面找到异常标记 "END-OF-STATEMENT"。预期标记可能包括:"JOIN
<joined_table>"。  SQLSTATE=42601

SQL0104N  在 "END" 后面找到异常标记 "END-OF-STATEMENT"。预期标记可能包括:"JOIN <joined_table>                              "。

说明: 

在文本 "<文本>" 后面的指定标记处检测到 SQL 语句中或 SYSPROC.ADMIN_CMD 
过程的输入命令字符串中的语法错误。"<文本>" 字段指示无效标记前面的 SQL 
语句中或 SYSPROC.ADMIN_CMD 过程的输入命令字符串的 20 个字符。

作为帮助,在 SQLCA 的 SQLERRM 字段中,提供了有效标记的部分列表作为 "<标
记列表>"。此列表假定语句直到该位置为止均正确。

无法处理该语句。

用户响应: 

在指定的标记区域内检查并更正语句。

  sqlcode:-104

  sqlstate:42601
--参考方法--
你执行的方式有错误,需要保存成一个文件,用db2 -cvf xxx来运行,

你是直接拷贝到cmd里运行的吧?
--参考方法--
你的脚本在哪里执行的
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:24:10
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/9415/
本文WWW.DOC100.NET DOC100.NET版权所有。