首页 > 解决方案 > 尝试从 DB2 表中读取时的 SQLCode -991

问题描述

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

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

SQLSTATE = 57015

现在我不明白为什么会发生这个错误。DB2 数据库已启动并正在运行,我可以自己访问它。我的程序代码中也找不到错误。遗憾的是,谷歌搜索并没有为我提供明确的解决方案,我所能找到的只是程序的编译工作、运行它的 jcl 或 DB2 本身的问题。

标签: sqldb2coboljcl

解决方案


有没有绑定成功啊!!!,错误提示计划不存在或未授权
需要与您站点上的人员讨论编译/绑定过程以及谁授权

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

基本上--->

                                 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 访问计划的 Bind


在 java 等之后,这可能看起来很啰嗦。但是有一些优点

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

推荐阅读