sql - 尝试从 DB2 表中读取时的 SQLCode -991
问题描述
我已经在 Cobol 中创建并编译了一个程序,但是在尝试使用 JCL 作业运行和测试它时,我在读取输出时遇到了这个错误。(程序编译并且作业本身没有错误地运行)
SQLCODE = -991,错误:CALL ATTACH 无法建立隐式连接或打开 DB2。RC1=0008 RC2=00F30034
SQLSTATE = 57015
现在我不明白为什么会发生这个错误。DB2 数据库已启动并正在运行,我可以自己访问它。我的程序代码中也找不到错误。遗憾的是,谷歌搜索并没有为我提供明确的解决方案,我所能找到的只是程序的编译工作、运行它的 jcl 或 DB2 本身的问题。
解决方案
有没有绑定成功啊!!!,错误提示计划不存在或未授权。
您需要与您站点上的人员讨论编译/绑定过程以及谁授权
如果您不了解 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 访问路径。这导致相当可预测的运行时间。
推荐阅读
- erlang - 如何从 Erlang 中的 MucSub 事件中提取嵌套的 ejabberd 消息元素
- directshow - Directshow 视频渲染到两个窗口
- excel - 有没有办法限制使用 VBA 删除工作表中的行?
- pyspark - 如何使用 GraphFrame 从边缘列表创建图形
- python - 根据字符串值的阈值删除列
- python - 如何使用两个系列作为输入应用函数,输出是每个参数组合的函数结果的 DataFrame?
- java - 在 Java Spring Boot 中在运行时更改 @Bean 的值
- react-native - 错误意外标识符“从'react'导入反应;” 在本机反应
- python - django disabled Booleanfield 未在 POST 方法上提交
- c - 为什么会发生堆损坏?