- 论坛徽章:
- 0
|
我写了一个SQLRPGLE的小程序,功能是提取一个PF中所有数据,赋给变量,然后用变量更新或者插入数据给另一个PF。但是现在遇到2个问题:
1.运行程序后,如果想要CLRPFM第2个PF,提示:MEMBER正在使用中。必须
注销重新登陆才行,这是为什么??
2.代码可能有问题,我执行程序后,他只读取了第一个PF中第1和第3条记录,而且只能插入不能更新,我 晕~ 请大人帮我看看代码。
---声明变量
0001.00 DVXHEMPID S 3A
0002.00 DVXHNAME S 15A
0003.00 DVXHJOB S 10A
0004.00 DISEXIST S 5S 0
----声明游标
0005.00 C/EXEC SQL
0006.00 C+ DECLARE C1 CURSOR FOR SELECT XHEMPID,XHNAME,XHJOB FROM XHZQ
0007.00 C/END-EXEC
---打开游标
0008.00 C/EXEC SQL
0009.00 C+ OPEN C1
0010.00 C/END-EXEC
---当没有出错的时候把游标里的值赋给变量
0011.00 C DOW SQLCOD = 0
0012.00 C/EXEC SQL
0013.00 C+ FETCH C1 INTO :VXHEMPID,:VXHNAME,:VXHJOB
0014.00 C/END-EXEC
---用变量VXHEMPID作为关键字来查找记录是否存在
0015.00 C/EXEC SQL
0016.00 C+ SELECT COUNT(*) INTO :ISEXIST FROM XHZQ1 WHERE XHEMPID1 = :VXHEMPID
---如果不存在就插入记录
0017.00 C/END-EXEC
0018.00 C IF ISEXIST = 0
0019.00 C/EXEC SQL
0020.00 C+ INSERT INTO XHZQ1(XHEMPID1,XHNAME1,XHJOB1)
0021.00 C+ VALUES(:VXHEMPID,:VXHNAME,:VXHJOB)
0022.00 C/END-EXEC
0023.00 C ENDIF
---如果存在就更新记录
0024.00 C IF ISEXIST = 1
0025.00 C/EXEC SQL
0026.00 C+ UPDATE XHZQ1
0027.00 C+ SET XHNAME1 = :VXHNAME,
0028.00 C+ XHJOB1 = :VXHJOB
0029.00 C/END-EXEC
0030.00 C ENDIF
---继续读下一个记录
0031.00 C/EXEC SQL
0032.00 C+ FETCH C1 INTO :VXHEMPID,:VXHNAME,:VXHJOB
0033.00 C/END-EXEC
0034.00 C ENDDO
---关闭游标
0035.00 C/EXEC SQL
0036.00 C+ CLOSE C1
0037.00 C/END-EXEC
---提交所做的更改
0038.00 C/EXEC SQL
0039.00 C+ COMMIT
0040.00 C/END-EXEC
---结束
0041.00 C RETURN |
|