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

时间:2018-07-05 06:03:19

标签: sql db2 cobol jcl

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

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

SQLSTATE = 57015

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

1 个答案:

答案 0 :(得分:4)

您已完成绑定并成功了!!!!,错误表明计划不存在或未被授权。
需要与站点上的人交谈有关编译/绑定过程以及谁 授权

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

基本上--->

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

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

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

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


这似乎在Java等之后long绕不休。但是有一些优点

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