新しいテーブルを作成するときに出力タイプの定義を繰り返すことなく、既存のプロシージャを呼び出してそのテーブルタイプのOUT
パラメータを新しい物理テーブルに保存します。手順はテーブルタイプを繰り返さずに新しいテーブルにストアドプロシージャの出力を保存します
CREATE PROCEDURE MYPROC
(IN X INTEGER, OUT Y TABLE(A INTEGER, B DOUBLE, C NVARCHAR(25)))
LANGUAGE SQLSCRIPT AS BEGIN
...
END;
た場合たとえば、私は(A INTEGER, B DOUBLE, C NVARCHAR(25))
一部を繰り返すことなく、出力のための物理的なテーブルを作成したいと思います。
私はすでに結果が欲しいと思う構造のテーブルを持っていればCREATE TABLE MY_OUTPUT LIKE EXISTING_TABLE
できますが、私はできません。
プロシージャの出力タイプに定義されている名前付きタイプが既にある場合は、そのタイプに基づいてテーブルを作成できますが、そうではありません。
プロシージャの出力パラメータの代わりにサブクエリの場合は、CREATE TABLE MY_OUTPUT AS (<subquery>)
とすることもできますが、サブクエリではないためサブクエリとして表現する方法はわかりません。また、複数の出力パラメータがあり、複数の出力パラメータでどのように動作させるかわかりません。
私の具体的なケースでは、関数はSAP HANA Predictive Analysis Libraryから来ているので、関数の定義方法を変更するオプションはありません。さらに、PALのパラメータの型の異常な柔軟な処理により、通常のSQLScriptプロシージャで使用できるソリューションを使用できなくなる可能性があると私は思っていますが、PALで失敗しても通常のプロシージャで使用できるソリューションにはまだ関心があります。
これを行う方法はありますか?
他の方法 - 私はプロシージャを持っており、プロシージャの出力タイプに一致するテーブルを作成したいと思います。 – user2357112
PROCEDURE_PARAMETER_COLUMNSシステムビューには、ストアドプロシージャのパラメータの列情報があります。関連するスキーマでこれらをテーブルとして作成するためには、動的SQLを作成する必要があります – Eralper