Shape の APPEND 句
Shape コマンドの APPEND 句は、レコードセットに列または列を追加します。 多くの場合、これらの列は子レコードセットを参照するチャプター列です。
構文
SHAPE [parent-command [[AS] parent-alias]] APPEND column-list
説明
この句の各部分は次のとおりです。
parent-command
0 または次のいずれか (parent-command を完全に省略できます)。
{}Recordset オブジェクトを返す中かっこ ("") で囲まれたプロバイダー コマンド。 このコマンドは基になるデータ プロバイダーに対して発行され、その構文はそのプロバイダーの要件によって異なります。 これは通常、SQL 言語になりますが、ADO では特定のクエリ言語は必要ありません。
かっこに埋め込まれた別の shape コマンド。
データ プロバイダー内のテーブルの名前が後に続く TABLE キーワード。
parent-alias
親レコードセットを参照する省略可能なエイリアス。
column-list
次のうちの 1 つ以上です。
集計列。
計算列。
NEW 句を使用して作成された新しい列。
チャプター列。 チャプター列の定義はかっこ ("()") で囲まれています。 次の構文を参照してください。
SHAPE [parent-command [[AS] parent-alias]]
APPEND (child-recordset [ [[AS] child-alias]
RELATE parent-column TO child-column | PARAMETER param-number, ... ])
[[AS] chapter-alias]
[, ... ]
注釈
child-recordset
{}Recordset オブジェクトを返す中かっこ ("") で囲まれたプロバイダー コマンド。 このコマンドは基になるデータ プロバイダーに対して発行され、その構文はそのプロバイダーの要件によって異なります。 これは通常、SQL 言語になりますが、ADO では特定のクエリ言語は必要ありません。
かっこに埋め込まれた別の shape コマンド。
既存の形成済みのレコードセットの名前。
データ プロバイダー内のテーブルの名前が後に続く TABLE キーワード。
child-alias
子レコードセットを参照する別名。
parent-column
parent-command によって返されるレコードセット内の列。
child-column
child-command によって返されるレコードセット内の列。
param-number
「パラメーター化コマンドの操作」を参照してください。
chapter-alias
親に追加されたチャプター列を参照する別名。
注意
"parent-column TO child-column" 句は実際にはリストであり、定義される各リレーションシップがコンマで区切られます。
注意
APPEND キーワードの後の句は実際にはリストであり、各句はコンマで区切られ、親に追加される別の列を定義します。
SHAPE コマンドの一部としてユーザー入力からプロバイダー コマンドを構築すると、SHAPE により、ユーザーが指定したプロバイダー コマンドが不透明な文字列として扱われ、プロバイダーに忠実に渡されます。 たとえば、次の SHAPE コマンドでは、
SHAPE {select * from t1} APPEND ({select * from t2} RELATE k1 TO k2)
SHAPE では、次の 2 つのコマンドが実行されます。select * from t1
および select * from t2 RELATE k1 TO k2)
。 ユーザーがセミコロンで区切られた複数のプロバイダー コマンドから構成される複合コマンドを提供する場合、SHAPE では違いを区別できません。 したがって、次の SHAPE コマンドでは、
SHAPE {select * from t1; drop table t1} APPEND ({select * from t2} RELATE k1 TO k2)
SHAPE で select * from t1; drop table t1
と (select * from t2 RELATE k1 TO k2),
が実行され drop table t1
が別のものであり、この場合は危険なプロバイダー コマンドであることが認識されていません)。 このような潜在的なハッカー攻撃が発生しないように、アプリケーションは常にユーザー入力を検証する必要があります。
このセクションでは、次のトピックを扱います。