3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

SQLからRPGプログラムを(直接)呼び出す

Posted at

SQLからRPGを呼び出す場合ストアドプロシージャ経由でしか呼び出せない思っていました。
内容的にはほぼこの記事です。

ストアドプロシージャ呼び出し

サンプルプログラムを作成します。

sum.rpgle
**FREE

Dcl-Pi SUM;
  numa int(10);
  numb int(10);
  result int(10);
End-Pi;

result = numa + numb;

Return;

ストアドプロシージャを作成します。

sumpgm
create or replace procedure muralib.sumpgm (IN numa INT, IN numb INT, OUT result INT) 
LANGUAGE RPGLE  
EXTERNAL NAME MURALIB.SUM GENERAL;

ストアドプロシージャ経由で呼び出します。

CALL muralib.sumpgm(5,5,null);

sql1.PNG

RPGを直接呼び出してみます。

CALL muralib.sum(5,5,0);

sql2.PNG

呼び出せますが、結果が戻りません。

直接呼出しで結果の取得

結果を戻すように改修します。

sum2.sqlrpgle
**FREE

     Dcl-Pi SUM;
       numa int(10);
       numb int(10);
     End-Pi;

     Dcl-S rowCount Int(10);
     Dcl-Ds resultSet Dim(1) Qualified;
       result int(10);
     End-Ds;

     resultSet(1).result = numa + numb;
     rowCount = 1;

     Exec SQL Set Result Sets Array :resultSet For :rowCount Rows;

     Return;

実行します。

CALL muralib.sum2(5,5,0);

結果が取得できました。元記事では複数項目・複数レコードを返却しています。

sql3.PNG

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?