iSeries - 从 CL 程序调用 SQL 存储过程

发布于 2024-07-08 06:13:43 字数 77 浏览 7 评论 0原文

如何从 CL 程序运行存储过程? RUNSQLSTM 需要一个源成员,但我只想构建一个命令,以便用户可以轻松地传递变量,所以这是行不通的。

How can I run a stored procedure from a CL program? RUNSQLSTM requires a source member, but I just want to build a command so users can pass in variables easily, so this won't work.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

浅听莫相离 2024-07-15 06:13:43

您可以调用系统程序QZDFMDB2并向其传递一个参数以及要执行的SQL字符串。 在本例中,SQL 字符串是对存储过程的调用:

  CALL PGM(QZDFMDB2) PARM('CALL PROCEDURE (''XYZ'', ''ABC'')')

要替换您的值,请使用 PARM 变量:

  DCL VAR(&CALL) TYPE(*CHAR) LEN(200) 

  CHGVAR VAR(&CALL) 
  VALUE('CALL PROCEDURE (''' *CAT &PARM1 *TCAT ''', ''' *CAT &PARM2 *TCAT ''')')

  CALL PGM(QZDFMDB2) PARM(&CALL)

You can call the system program QZDFMDB2 and pass it one parameter with the SQL string to execute. In this case the SQL string is the call to your stored procedure:

  CALL PGM(QZDFMDB2) PARM('CALL PROCEDURE (''XYZ'', ''ABC'')')

To substitute in your values use a variable for the PARM:

  DCL VAR(&CALL) TYPE(*CHAR) LEN(200) 

  CHGVAR VAR(&CALL) 
  VALUE('CALL PROCEDURE (''' *CAT &PARM1 *TCAT ''', ''' *CAT &PARM2 *TCAT ''')')

  CALL PGM(QZDFMDB2) PARM(&CALL)
无声无音无过去 2024-07-15 06:13:43

可能有 2 个选项:

在 CL 程序中创建临时源成员。 使用提供的参数构造 SQL 语句来执行存储过程并将此源代码写入临时成员。 然后使用生成的成员作为参数添加对 RUNSQLSTM 的调用。

第二个选择是不创建 CL 程序,而是使用 RPG/COBOL。 通过使用嵌入式 SQL,可以使用参数执行存储过程。 它们的值应该从命令传递到程序。

There may be 2 options:

In the CL program create a temporary source member. Construct the SQL statement with the supplied parameters to execute the stored procedure and write this source code to the temporary member. Then add a call to RUNSQLSTM with the generated member as parameter.

A second option is not to create a CL program but use RPG/COBOL. By using embedded SQL the stored procedure can be executed with the parameters. Their values should be passed from the command to the program.

冰魂雪魄 2024-07-15 06:13:43

有一次,有人写了一个命令,我用过。 我找不到该参考了,但我还有另外两个选择:

  1. This文章使用 REXX
  2. 本文使用 RPG

他们两者都包含使命令正常工作所需的源代码。

At one time, there was a command that someone wrote that I had used. I can't find that reference anymore, but I have two other options:

  1. This article uses REXX
  2. This article uses RPG

They both include the source you need to get the command working.

じ违心 2024-07-15 06:13:43

从 CLLE 调用 StoredProcedure 的一种方法是:
RUNSQL SQL('调用 MYPRCSQL')

One way to call a StoredProcedure from CLLE is:
RUNSQL SQL('call MYPRCSQL')

幻梦 2024-07-15 06:13:43

QCMDEXC 可能是您正在寻找的命令。

QCMDEXC might be the command you are looking for.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文