尝试从DB2表读取时的SQLCode -991

APL*_*APL -1 sql db2 cobol jcl

我已经在Cobol中创建并编译了一个程序,但是当尝试使用JCL作业运行和测试该程序时,读取输出时出现此错误。(程序编译并且作业本身没有错误)

SQLCODE = -991,错误:呼叫连接无法建立隐式连接或对DB2的打开。RC1 = 0008 RC2 = 00F30034

SQLSTATE = 57015

现在我不明白为什么会发生此错误。DB2数据库已启动并正在运行,我可以自己访问它。我在程序代码中也找不到错误。可悲的是,它无法为我提供一个清晰的解决方案,我只能找到问题所在,要么是程序的编译工作,运行它的jcl要么是DB2本身的问题。

Bru*_*tin 5

您是否进行了绑定并成功了!!!,该错误表明该计划不存在未被授权
需要与您的站点的人讨论有关编译/绑定过程以及授权人的信息。

如果您不了解Mainframe Cobol / DB2编译过程,请尝试阅读此内容

基本上--->

                                 Cobol program 
    Cobol DB2 Program ---+---->  with no  SQL   ---> Compile ----->  Executable
                         |       but calls Plan  
                         |
                         +---->  DBRM (SQL)   -----> Bind   ------>  DB2 Plan    
Run Code Online (Sandbox Code Playgroud)

这是计划需要的DB2授权来运行SQL!您可能可以授权该计划,或者可能需要查看DBA的

使用DB2 COBOL,有一个Co-Compiler(是一个预编译器),它可以剥离SQL并创建DBRM(基本上是一个特殊的SQL过程)。

绑定处理DBRM(SQL)并创建DB2访问计划


在Java等之后,这似乎有些困难。但是有一些优点

  • SQL是提前处理的,而不是在程序运行时处理的
  • 您可以随时检查DB2访问路径-执行之前/之后。对于分析性能问题很有用。
  • 从一次运行到下一次使用相同的DB2访问路径。这导致相当可预测的运行时间。