ここは旧式の4DドキュメントWebサイトです。最新のアップデートされたドキュメントを読むには新サイトをご利用下さい→ developer.4d.com |
||||||||||||||||||||||||||||
|
4D v20 R7
SQLコマンドの概要
|
4Dのタイプ | SQLのタイプ |
C_STRING | SQL_C_CHAR |
C_TEXT | SQL_C_CHAR |
C_REAL | SQL_C_DOUBLE |
C_DATE | SQL_C_TYPE_DATE |
C_TIME | SQL_C_TYPE_TIME |
C_BOOLEAN | SQL_C_BIT |
C_INTEGER | SQL_C_SHORT |
C_LONGINT | SQL_C_SLONG |
C_BLOB | SQL_C_BINARY |
C_PICTURE | SQL_C_BINARY |
C_GRAPH | SQL_C_BINARY |
C_OBJECT | SQL_C_BINARY |
SQLリクエストに4D式 (変数、配列、フィールド、ポインタ、有効な式) を挿入するには2通りの方法があります。一つは直接割り当てる方法。もう一つはSQL SET PARAMETER で引数を設定する方法です。
直接の割り当ては2つの方法で実行できます:
SQL EXECUTE("INSERT INTO emp (empnum,ename) VALUES (<<vEmpnum>>,<<vEname>>)")
SQL EXECUTE("SELECT age FROM People WHERE name= :vName")
注: コンパイルモードでは、特定の条件下においてのみ($で始まる) ローカル変数への参照を使用することができます(以下参照)。
この例では、リクエスト実行時に引数が4DのvEmpnum、vEnameおよびvNametheの現在値に置き換えられます。このソリューションは4Dフィールドと配列でも動作します。
この簡単に使用できるシンタックスには、SQL標準に対応していない、また出力引数の使用を許可しないといった欠点もあります。これを修正するには、SQL SET PARAMETER コマンドを使用します。このコマンドを使用して使用モード (入力と出力) とともに、リクエストに各4Dオブジェクトを統合できます。作り出されたシンタックスは標準のものです。詳細については、SQL SET PARAMETER コマンドの説明を参照してください。
1. この例題では4D配列を直接関連付けてSQLクエリを実行します:
ARRAY TEXT(MyTextArray;10)
ARRAY LONGINT(MyLongintArray;10)
For(vCounter;1;Size of array(MyTextArray))
MyTextArray{vCounter}:="Text"+String(vCounter)
MyLongintArray{vCounter}:=vCounter
End for
SQL LOGIN("mysql";"root";"")
SQLStmt:="insert into app_testTable (alpha_field, longint_field) VALUES (<<MyTextArray>>, <<MyLongintArray>>)"
SQL EXECUTE(SQLStmt)
2. この例題では4Dフィールドを直接関連付けて、SQLクエリを実行します:
ALL RECORDS([Table_2])
SQL LOGIN("mysql";"root";"")
SQLStmt:="insert into app_testTable (alpha_field, longint_field) VALUES (<<[Table_2]Field1>"+">,<<[Table_2]Field2>>)"
SQL EXECUTE(SQLStmt)
3. この例題では逆参照されたポインタを使用して直接変数を渡して、SQLクエリを実行します:
C_LONGINT($vLong)
C_POINTER($vPointer)
$vLong:=1
$vPointer:=->$vLong
SQL LOGIN("mysql";"root";"")
SQLStmt:="SELECT Col1 FROM TEST WHERE Col1=:$vPointer"
SQL EXECUTE(SQLStmt)
コンパイルモードでは特定の条件下において、SQL文の中でローカル変数参照を使用できます:
SQL EXECUTE("select * from t1 into :$myvar")
C_TEXT(tRequest)
tRequest:="select * from t1 into :$myvar"
SQL EXECUTE(tRequest)
4Dランゲージ中でSQLクエリの値を受け取る方法は2つあります:
SQLクエリーの結果を直接配列タイプのリストボックスに表示することができます。これによりSQLクエリーの結果を素早く見る方法が提供されま す。SELECTタイプのクエリーのみを使用できます。このメカニズムは外部SQLデータベースには使用できません。
この機能は以下の原則に基づいて動作します:
例
PEOPLEテーブルのすべてのフィールドのデータを取得し、vlistboxという変数名のリストボックスに結果を表示します。これを行うためのメソッドは以下の通りです:
Begin SQL
SELECT * FROM PEOPLE INTO <<vlistbox>>
End SQL
_o_EXPORT ODBC
_o_IMPORT ODBC
Blog: Read 4D object fields with SQL Engine
プロダクト: 4D
テーマ: SQL
変更: 4D v17 R5
ランゲージリファレンス ( 4D v20 R7)