存储过程 执行sql语句报错,坐等大虾!

evoleht 2010-08-20 01:10:31
我有一条SQL语句。单独执行的时候,没有错误,但当我把它放在存储过程中执行,就会报“ 在 "TINUUMID,value(MAX(S" 后面找到异常标记
"END-OF-STATEMENT"。预期标记可能包括:")"。 SQLSTATE=42601
”这个错误,大侠们,帮忙看下是什么原因,有没有什么函数可以打印出将要执行的的sql语句


 DECLARE GLOBAL TEMPORARY TABLE SESSION.LASTTIME
( CONTINUUMID VARCHAR(15),
MAXTIME TIMESTAMP )
WITH REPLACE
NOT LOGGED;


SET sqlStr1 = 'INSERT INTO SESSION.LASTTIME(CONTINUUMID,MAXTIME) SELECT HNM_TR_SITEANDCONID.CONTINUUMID,
value(MAX(STATISTIC_DATE),timestamp((current timestamp)-1 DAY))
FROM '||newTableName||'
right JOIN HNM_TR_SITEANDCONID
ON HNM_TR_SITEANDCONID.CONTINUUMID = '||newTableName||'.CONTINUUMID
group by HNM_TR_SITEANDCONID.CONTINUUMID';

EXECUTE IMMEDIATE sqlStr; --


...全文
147 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhang1struts1yun 2010-08-24
  • 打赏
  • 举报
回复
创建事物,在事物里面执行存储过程,有个方法可以检查错误代码,rollback
maitianhust 2010-08-23
  • 打赏
  • 举报
回复
动态SQL,语法是这样的,不过看你的SQL,根本不是动态SQL,也没有什么变量,你好好看看动态SQL语法。
[Quote=引用 3 楼 wwwwa 的回复:]

试试
PREPARE S1 FROM sqlStr1;
EXECUTE S1;
[/Quote]
CatNetMouse 2010-08-23
  • 打赏
  • 举报
回复
你可以定义一个out类型的出参,把这条动态SQL显示出来呀,然后就明白动态SQL中出错在哪里了。。
ACMAIN_CHM 2010-08-20
  • 打赏
  • 举报
回复
检查一下你的sqlStr1 内容是什么估计有问题。
WWWWA 2010-08-20
  • 打赏
  • 举报
回复
试试 
PREPARE S1 FROM sqlStr1;
EXECUTE S1;
evoleht 2010-08-20
  • 打赏
  • 举报
回复
当我单独执行


INSERT INTO SESSION.LASTTIME(CONTINUUMID,MAXTIME) SELECT HNM_TR_SITEANDCONID.CONTINUUMID,
value(MAX(STATISTIC_DATE),timestamp((current timestamp)-1 DAY))
FROM newTableName
right JOIN HNM_TR_SITEANDCONID
ON HNM_TR_SITEANDCONID.CONTINUUMID = newTableName.CONTINUUMID
group by HNM_TR_SITEANDCONID.CONTINUUMID


时候没有出错。
wwwwb 2010-08-20
  • 打赏
  • 举报
回复
sqlStr1中的内容是什么
value函数用法是否正确

5,889

社区成员

发帖
与我相关
我的任务
社区描述
IBM DB2 是美国IBM公司开发的一套关系型数据库管理系统,它主要的运行环境为UNIX(包括IBM自家的AIX)、Linux、IBM i(旧称OS/400)、z/OS,以及Windows服务器版本
社区管理员
  • DB2
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧