ローカルデータベースでクエリを実行するストアドプロシージャをAS400のDB2に書き込もうとしています。 DBLocale
という名前)とリモートデータベース上の他のもの(DBRemoto
と呼ぶ)。オペレーション・ナビゲーターでは、「データベース」ノードを選択することができます。プロシージャでは、2つのデータベースに接続します。ローカルともう一方のリモートに接続します。
CONNECT TO DBRemoto;
および/またはSET CONNECTION DBRemoto;
で何かを試しましたが、「接続がすでに存在します」、「接続が存在しません」、「CALL命令が完了しました」(ただし結果セットはありません)などの結果が得られました。
CREATE PROCEDURE MYLIB.TEST_CONNECT_INSIDE_PROCEDURE
DYNAMIC RESULT SETS 1
LANGUAGE SQL
READS SQL DATA
BEGIN
DECLARE sql_string VARCHAR(1024) DEFAULT '';
DECLARE locale INT DEFAULT -1;
DECLARE remoto INT DEFAULT -1;
DECLARE cur CURSOR FOR stmt;
DECLARE curOut CURSOR FOR select locale, remoto from SYSIBM.SYSDUMMY1;
-- run the same query in both DBs; I checked, results must be different
SET sql_string = 'select count(*) as QTY from MYLIB.MYTABLE';
-- run locally
CONNECT TO DBLocale; --it's one of my attempts
PREPARE stmt FROM sql_string;
OPEN cur;
FETCH cur INTO locale;
CLOSE cur;
-- run remotely
CONNECT TO DBRemoto; --it's one of my attempts
PREPARE stmt FROM sql_string;
OPEN cur;
FETCH cur INTO remoto;
CLOSE cur;
-- output results
OPEN curOut;
SET RESULT SETS CURSOR curOut;
END;
私は、誰かがそれが可能であるなら、私に教えて、それをどのように動作するかを明確にすることができ
call MYLIB.TEST_CONNECT_INSIDE_PROCEDURE()
でそれをしてください呼び出します
これは私が行うことを期待するものでしょうか?プロシージャで実行できない場合は、回避策がありますか?どうもありがとう!
Bob CozziとFamily Guyのリファレンス。驚くばかり。 – jamesallman
ありがとう!パスワードに引用符が必要ですか?とにかくそれはどの場合にも動作しません:プロシージャを作成せず、私にSQL7032エラーを与えます。 – bluish