SPのFirebirdで「テーブルを選択として作成」をシミュレートする方法を探しています。
このステートメントは、別の製品で頻繁に使用されています。これは、インデックス付け可能なセットを少なくするのが非常に簡単で、サーバー側で非常に高速な結果を提供するためです。
create temp table a select * from xxx where ...
create indexes on a ...
create temp table b select * from xxx where ...
create indexes on b ...
select * from a
union
select * from b
または、サブクエリの3つ以上のレベルを回避します。
select *
from a where id in (select id
from b
where ... and id in (select id from c where))
「テーブルを選択として作成」は非常に優れており、正しいフィールドタイプと名前が提供されるため、事前に定義する必要はありません。
Delphiを使用してFirebirdで「createtableas」をシミュレートできます。
行なしでselectを作成し、テーブルフィールドタイプを取得し、それらを変換してテーブルSQLを作成して実行し、「insert intotemptable」+selectsqlwith rows(order byなし)を作成します。大丈夫です。
しかし、select sqlを取得し、その結果を使用して新しい一時テーブルを作成する一般的なストアドプロシージャで同じものを作成できますか?
だから:クエリ結果のフィールドタイプを取得して、それらからフィールドクリエーターSQLを作成できますか?
方法があるかどうかを尋ねているだけです(次に、列を指定する必要があります)。