私はSYSPROC.ADMIN_CMDに変数の値を渡す必要があるという問題があります。ここで変数をSYSPROC.ADMIN_CMDに渡す
は契約です:
DECLARE vDate TIMESTAMP;
SET vDate = timestamp_iso (MyDateFunctionGoesHere());
CALL SYSPROC.ADMIN_CMD ('LOAD FROM (select vDate...) OF CURSOR insert into .. (DateColumn...) NONRECOVERABLE');
問題は、ストアドプロシージャを実行すると、私はエラーを取得することです:
ERROR [42703] [IBM][DB2/AIX64] SQL0206N "VDATE" is not valid in the context where it is used. SQLSTATE=42703
私はそれを修正しようとした:
CALL SYSPROC.ADMIN_CMD ('LOAD FROM (select'''||vDate||'''...) OF CURSOR insert into .. (DateColumn...) NONRECOVERABLE');
次に、 "FUNCTION型の||という名前の許可されたルーチンはありません...
これは常に変動する動的値であるため、LOADに渡す日付変数が必要です。どうすればそれを処理できますか?
連結( '||はFUNCTION型です)は、タイムスタンプではなく文字列で機能します。 'TIMESTAMP_ISO()'の代わりに 'VARCHAR_FORMAT()'を試してみてください。 – mustaccio