起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2127|回复: 11

[结贴] 在biz层使用KSQL语句

[复制链接]

15

主题

89

帖子

280

积分

中级会员

Rank: 3Rank: 3

积分
280
发表于 2013-6-8 16:04:31 | 显示全部楼层 |阅读模式
本帖最后由 apacheheiz 于 2013-6-8 16:09 编辑

代码如下:
  1. public static void dYProcessAfterFinish() {
  2. /**
  3. * 结束
  4. * 流程结束后,操作相应数据,将inspur中启动材料代用单审批流程。
  5. * insert into PPSPZSJ
  6. */
  7. try {
  8. //可以为主键,单据流水
  9. String key = com.justep.system.process.ProcessUtils.getProcessData1();
  10. //getData() 、getTime() 、getLsUserCode() 为自己写的Java方法,获取日期,时间,另外一个系统用户编号
  11. String insert_PPSPZSJ_kSql = "insert into PPSPZSJ PPSPZSJ " +
  12. "(PPSPZSJ_YWID,PPSPZSJ_DJLS,PPSPZSJ_SPZT,PPSPZSJ_DQJD,PPSPZSJ_TJRQ,PPSPZSJ_TJSJ,PPSPZSJ_TJRY,PPSPZSJ_SDZT) " +
  13. "values " +
  14. "('KCXEDTZ','" + key + "','3','p_6','" + getData() + "','" + getTime() + "','" + getLsUserCode() + "','0')";

  15. KSQL.executeUpdate(insert_PPSPZSJ_kSql,null,"/DY_process/Dy_process/data",null);

  16. }
  17. catch (Exception e) {
  18. throw new RuntimeException (e.getMessage());
  19. }

  20. }
复制代码
问题是:
  1. Caused by: java.lang.RuntimeException: 执行ksql:insert into PPSPZSJ PPSPZSJ (PPSPZSJ_YWID,PPSPZSJ_DJLS,PPSPZSJ_SPZT,PPSPZSJ_DQJD,PPSPZSJ_TJRQ,PPSPZSJ_TJSJ,PPSPZSJ_TJRY,PPSPZSJ_SDZT) values ('KCXEDTZ','31812','3','p_6','20130608','155021','heiz','0')时出错!
  2. at DYProcess.dYProcessAfterFinish(DYProcess.java:68)
复制代码
异常指向的行是我抛出异常的行号。
也就是 指向下面这句话
  1. throw new RuntimeException (e.getMessage());
复制代码
异常中的 SQL语句,在oracle数据库中可以正常运行,但是在前台触发的时候,就报这个异常
各位请指教这是什么原因。

109

主题

2907

帖子

1564

积分

金牌会员

Rank: 6Rank: 6

积分
1564
QQ
发表于 2013-6-8 17:05:58 | 显示全部楼层
你这是sql,不能使用16.KSQL.executeUpdate
回复 支持 反对

使用道具 举报

发表于 2013-6-8 21:35:24 | 显示全部楼层
你调用了ksql的方法,那么sql语句就要按照ksql的语法来写,否则就是自己写普通的jdbc方法处理了。

评分

参与人数 1 +4 收起 理由
sxl + 4

查看全部评分

回复 支持 反对

使用道具 举报

15

主题

89

帖子

280

积分

中级会员

Rank: 3Rank: 3

积分
280
 楼主| 发表于 2013-6-10 08:01:05 | 显示全部楼层
lanware_smf 发表于 2013-6-8 21:35
你调用了ksql的方法,那么sql语句就要按照ksql的语法来写,否则就是自己写普通的jdbc方法处理了。 ...

我是参照 API中KSQL语法写的 ,能说明下 KSQL 的Insert into 怎么写吗?
回复 支持 反对

使用道具 举报

15

主题

89

帖子

280

积分

中级会员

Rank: 3Rank: 3

积分
280
 楼主| 发表于 2013-6-10 08:01:23 | 显示全部楼层
吉他爱天涯 发表于 2013-6-8 17:05
你这是sql,不能使用16.KSQL.executeUpdate

我是参照 API中KSQL语法写的 ,能说明下 KSQL 的Insert into 怎么写吗?
回复 支持 反对

使用道具 举报

发表于 2013-6-10 08:08:20 | 显示全部楼层
INSERT语法

        INSERT INTO <概念> <别名> (<修改关系列表>) VALUES (<插入的值>)

        INSERT INTO <概念> <别名> (<修改关系列表>) <子查询>

        INSERT INTO <多值关系> (<概念名>, <关系名>) VALUES (<插入的值>)

1)    案例:

¨         INSERT INTO SA_OPPerson p (p, p.sName, p.sCode) VALUES ('PSN01', :name, :code)

¨         INSERT INTO SA_OPPerson p (p, p.sName, p.sCode) (SELECT :newid , p1.sName, p1.sCode FROM SA_OPPerson p1 WHERE p1.sName = 'ZHANGSAN')

INSERT INTO Person.hasDog (Person[0], Person[1], Person.hasDog) VALUES('P1', 'P2', 'D1') //这里假设Person是联合主键,且Person.hasDog是多对多关系

2)    注意:

最后一种语法主要用于插入一条多对多关系,如:假设Person.hasDog是多对多关系,存在关系表中,则INSERT INTO Person.hasDog (Person, Person.hasDog) VALUES ('P1', 'D1')

如有问题,请参照api文档
回复 支持 反对

使用道具 举报

15

主题

89

帖子

280

积分

中级会员

Rank: 3Rank: 3

积分
280
 楼主| 发表于 2013-6-10 08:11:38 | 显示全部楼层
lanware_smf 发表于 2013-6-10 08:08
INSERT语法

        INSERT INTO   () VALUES ()

我是参照 INSERT INTO <概念> <别名> (<修改关系列表>) VALUES (<插入的值>)
写的 ,我需要改成什么样啊
回复 支持 反对

使用道具 举报

15

主题

89

帖子

280

积分

中级会员

Rank: 3Rank: 3

积分
280
 楼主| 发表于 2013-6-10 08:13:35 | 显示全部楼层
lanware_smf 发表于 2013-6-10 08:08
INSERT语法

        INSERT INTO   () VALUES ()

案例 1  中 name code 是什么 前台 字段ID 还是 后台 java中的 变量名?
回复 支持 反对

使用道具 举报

发表于 2013-6-10 08:15:38 | 显示全部楼层
1.保证你这sql语句在数据库中可以执行;
2.如果可以执行,你再在每个字段前面加概念的别名试试;即PPSPZSJ.字段名
回复 支持 反对

使用道具 举报

发表于 2013-6-10 08:18:36 | 显示全部楼层
apacheheiz 发表于 2013-6-10 08:13
案例 1  中 name code 是什么 前台 字段ID 还是 后台 java中的 变量名?

数据库中的字段
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-5-19 10:34 , Processed in 0.065158 second(s), 27 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表