otl与interval、绑定变量能否一起用

a0304050225 2011-04-20 08:46:56
在vc环境下采用otl更新数据库,代码如下:
char g_dbstr[256],sSql[1024];
memset(g_dbstr,0,sizeof(g_dbstr));
memset(sSql,0,sizeof(sSql));
sprintf(g_dbstr,"dnd/dnd@ora9_204");
string updateTime="20100415161712",hour="0",mimu="2",UserID="66660099";
connectToDB(g_dbstr);
sprintf(sSql,"update DND_User set UpdateEndDate = to_date ( :Update_Time<char[256]> , 'yyyy-mm-dd hh24:mi:ss' ) + interval :KeepTimeHH<char[256]> hour + interval :KeepTimeMM<char[256]> MINUTE where MSISDN = :UserID<char[256]> and ( ServiceType = 2 or ServiceType = 1) ");
otl_stream sqlstream(100,sSql,g_dbConn);
sqlstream<<updateTime.c_str()<<hour.c_str()<<mimu.c_str()<<UserID.c_str();
执行出现错误:
ORA-00933: SQL command not properly ended

如果把sql语句改成“update DND_User set UpdateEndDate = to_date ( :Update_Time<char[256]> , 'yyyy-mm-dd hh24:mi:ss' ) where MSISDN = :UserID<char[256]> and ( ServiceType = 2 or ServiceType = 1)”执行成功,
把sql语句改成"update DND_User set UpdateEndDate = to_date ( '20100415161712' , 'yyyy-mm-dd hh24:mi:ss' ) + interval '0' hour + interval '2' MINUTE where MSISDN = '66660099' and ( ServiceType = 2 or ServiceType = 1 )"执行成功,
把sql语句改成”update DND_User set UpdateEndDate = to_date ( :Update_Time<char[256]> , 'yyyy-mm-dd hh24:mi:ss' ) + interval '0' hour + interval '2' MINUTE where MSISDN = :UserID<char[256]> and ( ServiceType = 2 or ServiceType = 1)“执行成功
这是为什么呢?难道otl与interval、绑定变量不能一起用?
...全文
123 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
a0304050225 2011-04-21
  • 打赏
  • 举报
回复
问题找出来了,在oralce里面是 “interval :KeepTimeHH<char[256]> hour”看成一个整体处理并不解析其中的绑定变量
书虫 2011-04-20
  • 打赏
  • 举报
回复
眼晕,帮你顶下吧!

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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