如何通过System i Access ODBC Driver获取DB2 CL程序源文件?
解决通过System i Access ODBC Driver获取CL程序源文件的问题
错误原因分析
- CPF9802错误:要么程序
PSAAABBB不在当前库列表(LIBL)中,要么当前ODBC用户没有该程序的访问权限。 - CPF0006错误:
RTVCLSRC命令不存在LIBL参数,参数使用错误导致命令执行失败。
解决方案
1. 修正RTVCLSRC命令格式
RTVCLSRC指定程序所在库的正确方式是直接在PGM参数中使用库名/程序名的格式,而非错误的LIBL参数。示例:
CALL QSYS2.QCMDEXC('RTVCLSRC PGM(MAINDB/PSAAABBB)')
如果需要指定源文件的存储位置(默认会写入当前库的QCLSRC),可以添加SRCFILE参数明确指定:
CALL QSYS2.QCMDEXC('RTVCLSRC PGM(MAINDB/PSAAABBB) SRCFILE(MAINDB/QCLSRC)')
2. 解决权限问题
如果执行修正后的命令仍报CPF9802,需确认以下权限:
- 当前ODBC用户对程序所在库(
MAINDB)拥有*USE权限; - 当前用户对程序
PSAAABBB拥有*USE权限; - 当前用户对目标源文件(如
MAINDB/QCLSRC)拥有*CHANGE或*ADD权限(因为RTVCLSRC需要将源内容写入源文件)。
可联系系统管理员执行以下授权命令(替换为实际用户名):
GRANT *USE ON LIBRARY(MAINDB) TO USER(你的用户名) GRANT *USE ON OBJECT(MAINDB/PSAAABBB) TO USER(你的用户名) GRANT *CHANGE ON FILE(MAINDB/QCLSRC) TO USER(你的用户名)
3. 获取源文件内容
RTVCLSRC只是将CL程序的源导出到源文件成员中,若要通过ODBC读取源内容,需查询对应的源文件:
SELECT SRCDTA FROM MAINDB.QCLSRC WHERE SRCMBR = 'PSAAABBB'
内容的提问来源于stack exchange,提问作者Lukas Fürst
相关产品推荐
相关产品推荐

