好像我记得写过一个使用嵌入式 SQL 的 RPG 程序,每当发生 SQL 警告或错误时,它都会向交互式用户作业日志写入一条消息。我不必明确写出来;它默认记录它。
我现在正在编写的程序没有执行此日志记录,尽管我知道我可能会导致类似警告01003
和错误,并使用变量02000
读取它们。SQLState
我不认为我想象过这种行为。是否有我忘记设置的 H 规范关键字、我调用程序的方式(使用CALL
交互)、我编写 SELECT INTO 语句的方式(静态而不是动态)?我对其他想法不知所措。
好像我记得写过一个使用嵌入式 SQL 的 RPG 程序,每当发生 SQL 警告或错误时,它都会向交互式用户作业日志写入一条消息。我不必明确写出来;它默认记录它。
我现在正在编写的程序没有执行此日志记录,尽管我知道我可能会导致类似警告01003
和错误,并使用变量02000
读取它们。SQLState
我不认为我想象过这种行为。是否有我忘记设置的 H 规范关键字、我调用程序的方式(使用CALL
交互)、我编写 SELECT INTO 语句的方式(静态而不是动态)?我对其他想法不知所措。
SqlStates 00000
、01###
和02###
不生成日志,但其他状态会生成日志。我会明确地将任何您想在那里看到的内容写入日志。您可以轻松编写一个子过程,您可以在每个 sql 语句之后调用该子过程来进行日志记录。
在调试模式 (STRDBG UPDPROD(*YES)) 下运行您的作业,以从所有数据库操作中获取附加诊断信息。
听起来程序正在注销的工作中运行..
DSPJOB --> 2. 显示作业定义属性
提供最多的日志记录...
Message logging:
Level . . . . . . . . . . . . . . . . . . . . . : 4
Severity . . . . . . . . . . . . . . . . . . . : 0
Text . . . . . . . . . . . . . . . . . . . . . : *SECLVL
Log CL program commands . . . . . . . . . . . . . : *YES
Job log output . . . . . . . . . . . . . . . . . : *JOBEND
基本上不提供日志记录...
Message logging:
Level . . . . . . . . . . . . . . . . . . . . . : 0
Severity . . . . . . . . . . . . . . . . . . . : 99
Text . . . . . . . . . . . . . . . . . . . . . : *NOLIST
Log CL program commands . . . . . . . . . . . . . : *NO
Job log output . . . . . . . . . . . . . . . . . : *JOBEND