Q116:データベースアクセスコンポーネントについて。通常のSQL文ではなく、ストアドプロシージャなどをMZから実行する場合、どのメソッドを使えばよいでしょうか?
Q116-1:
「SQL文を実行する」メソッドだとエラーになります。
例)
オラクルDBでストアされたプロシージャtest()を実行したい。
コマンドではエラーなく実行できるもとのする。
以下
>var out1 number
>execute test(1,'aaa',:out1);
プロシージャの作りで、バインド変数や戻り値を設定していると実行できないようです。
(戻りパラメータOUTなどまたFUNCTIONなど)
MZで実行できればよいのですが…。
A116-1:
Procedureでは戻り値を取得することは難しいかと思いますが、Functionですと、引数を渡し結果を取得することができるようです。
=============動作確認例============
SQL> CREATE OR REPLACE FUNCTION testf(dt IN NUMBER) RETURN NUMBER
2 IS
3 d NUMBER;
4 BEGIN
5 d := dt*2;
6 RETURN d;
7 END;
8 /
===================================
SQL文を実行する Select testf(100) from dual
===================================
なおMZPlatform上から「Create function」や「Create procedure」を行うのは、どうしても文章が長くなり、適切に実行されたか確認することが難しいため、事前にPL/SQL等で実行されることをお勧めいたします。