免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5034 | 回复: 11
打印 上一主题 下一主题

请问如何解决这类锁表?~~~~~~ [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-12-15 16:14 |只看该作者 |倒序浏览
请问如何解决这类锁表?

一个SQLRPGLE程序,

先用SQL语句从别的表中insert一些记录到一个表mytable1中,

SQL语句后面运行一段RPGLE语句,对表mytable1中的记录进行修改,
这时候发现报错表被锁,是执行的SQL语句把这个表锁住了吗?
如何解锁可以继续用RPGLE语句修改这个表的记录呢?

尝试了把这段RPGLE语句另生成一个独立的PGM,用一个总程序调用这两个程序,
第二个RPGLE语句程序仍然被锁报错。

以前用SQLRPGLE不多。

另外另一个问题,SQL语句执行的结果如何设置指示器之类捕捉呢?
如果出错了,就整个程序跳出报错,有捕捉办法嘛?


这里先行谢过!~~~~~~~~

论坛徽章:
0
2 [报告]
发表于 2009-12-15 20:54 |只看该作者
mytable1是临时表吗?
SQL语句执行的结果可以用SQLCOD捕捉,不同的值表示不同的结果,出错可以GO 'ABEND'

论坛徽章:
0
3 [报告]
发表于 2009-12-15 21:26 |只看该作者

回复 #2 giggsone 的帖子

mytable1就是正常PF文件编译出来的表

论坛徽章:
0
4 [报告]
发表于 2009-12-16 18:32 |只看该作者
是不是可以把文件定义KEYWOER--USROPN,执行完SQL 关了 --> 再开--->RPGLE   

我没试过。。

论坛徽章:
0
5 [报告]
发表于 2009-12-16 20:16 |只看该作者
SQLCOD是多少?

论坛徽章:
0
6 [报告]
发表于 2009-12-16 20:36 |只看该作者

谢谢各位!初步搞定!

谢谢各位!初步搞定!

把RPGLE语句放到了另一个程序,

第一个SQLRPGLE程序的SQL语句部分改写如下,

之前增加了CALL  QCMDEXC系统调用STRCMTCTL
SQL语句之后COMMIT,
然后系统调用ENDCMTCTL,
然后系统调用QSYS/RCLRSC LVL(*CALLER)
完毕,

主程序先调用SQLRPGLE程序,再调用RPGLE程序,
这把没锁表。


至于写到同一个程序里,没试验出来,没时间试验了。

这个办法是我查找软件系统的其他SQLRPGLE代码里,找到这段似乎是释放资源的,

就试验了一下,结果可以,

谢谢诸位!

论坛徽章:
0
7 [报告]
发表于 2009-12-16 20:37 |只看该作者

回复 #4 q疯哥p 的帖子

这个方法我试验过,不行

论坛徽章:
0
8 [报告]
发表于 2009-12-17 16:09 |只看该作者

回复 #1 letusgoup 的帖子

你的sqlrpgle程序是怎么编译的???如果编译sqlrpgle时将参数commit(*chg)改为commit(*none)就不会被sql加锁。。。!

论坛徽章:
0
9 [报告]
发表于 2009-12-17 16:24 |只看该作者
SQLRPG程序会有提交控制的,如果不指明你的SQL语句提交控制级别,就默认是你当前作业的提交控制级别,比如你调用SQLRPG之前,启动了STRCMTCTL *CS,那么SQL的提交控制级别就是CS,那在你SQL提交数据之前你的记录都被你自己锁着。
    解决的办法是在SQL语句的后面加上WITH NC,这样的话你的SQL语句就关闭了提交控制——其他RPG程序还是在事务中的。如果其他程序错误导致要回滚数据的话,你的SQL提交的代码就回滚不了了。感觉这样的程序会不那么优雅,整个作业一部分在事务中,一部分不在事务中......所以还是建议你根据业务逻辑调整一下你的代码。

[ 本帖最后由 newbiezhang 于 2009-12-17 16:29 编辑 ]

论坛徽章:
0
10 [报告]
发表于 2009-12-17 16:57 |只看该作者

回复 #8 huangxkst 的帖子

是吗?我就用一般的14,或15编译,还真没注意这个参数,谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP