4D v164D SQLエンジンにアクセスする |
||
|
4D v16
4D SQLエンジンにアクセスする
4D SQLエンジンにアクセスする
4DのビルトインSQLエンジンは3つの方法で呼び出すことができます:
QUERY BY SQL([OFFICES];"SALES > 100")
すべてのタイプの有効な4D表現式 (変数、フィールド、配列、式...) をSQL式のWHEREとINTO句で参照できます。4D参照であることを示すために、以下のいずれかの記法を使用できます:
例: C_TEXT(vName) または: C_TEXT(vName) 注: インタープロセス変数を使用する場合は、ブラケット [] が必要です (例えば<<[<>myvar]>>または:[<>myvar])。 コンパイルモードでは特定の条件下において、SQL文の中でローカル変数参照を使用できます:
SELECT文でのデータ取得は、Begin SQL/End SQLタグの中のSELECTコマンドでINTO句を使用する方法と、 "SQL"ランゲージコマンドを使う方法、両方で可能です。 Begin SQL
SQL EXECUTE("SELECT ename FROM emp";[Employees]Name) SQLからデータを受け取るこれら (Begin SQL/End SQLタグとSQLコマンド) 2つの方法の主な違いは、前者は一ステップですべての情報が4Dに返されるのに対し、後者はレコードを明示的にSQL LOAD RECORDでロードしなければならないことにあります。 例えばPEOPLEテーブルに100レコードあるとして:
ARRAY INTEGER(aBirthYear;0) 100レコードをすべて取り出すために10回ループします。一回ですべてのレコードをロードするには以下のようにします:
ARRAY INTEGER(aBirthYear;0) この場合、SELECT文の実行後、aBirthYear配列のサイズは100となり、各要素は100レコードから取り出された誕生年で埋められます。
C_TEXT(vName) 100レコードを取得するために10回のループを行います。ループ毎に[MYTABLE]テーブルに10レコードが作成され、PEOPLEテーブルから取得したBirth_Yearが[MYTABLE]Birth_Yearフィールドに保存されます。 C_TEXT(vName) この場合、SELECT文の実行中、[MYTABLE]テーブルに100レコードが作成され、それぞれのBirth_YearフィールドにはPEOPLEテーブルのBirth_Yearカラムの対応するデータが格納されます。 4Dは、SELECTクエリの結果データをリストボックスに配置するために使用できる、特別な自動機能 (LISTBOXキーワード) を提供します。詳細はDesign Referenceマニュアルを参照してください。 最適化のために、クエリにはSQL関数よりも4D式を使用することをお勧めします。4D式はクエリ実行前に一度だけ評価されます。SQL関数はそれぞれのレコード毎に評価されます。 例えば以下の文で: SQL EXECUTE("SELECT FullName FROM PEOPLE WHERE FullName=<<vLastName+vFirstName>>") vLastName+vFirstName式はクエリの実行前に一度だけ計算されます。以下の文では: SQL EXECUTE("SELECT FullName FROM PEOPLE WHERE FullName=CONCAT(<<vLastName>>,<<vFirstName>>)") CONCAT(<<vLastName>>,<<vFirstName>>) 関数はテーブルのレコード毎に呼び出されます。言い換えればレコードごとに式が評価されます。
参照
|
プロパティ
プロダクト: 4D
履歴
ARTICLE USAGE
SQLリファレンス ( 4D v16) |