4Dでは外部データベースを使用することができます。つまりローカルデータベースではないデータベースに対してSQLクエリを実行できます。これを行うために、ODBCを使用して外部データソースに接続するか、直接他の4Dデータベースに接続することができます。
以下は外部データベースとの接続を管理するためのコマンドです:
以下の例題は外部データソース (ORACLE) に接続し、ORACLEデータベースからデータを取得、そしてORACLEデータベースとの接続を閉じ、ローカルデータベースに再接続する方法を示してい ます。
システムには"Test_ORACLE_10g"というデータソース名が登録されているものとします。
ARRAY TEXT(aDSN;0)
ARRAY TEXT(aDS_Driver;0)
C_TEXT($Crt_DSN;$My_ORACLE_DSN)
ARRAY TEXT(aTitles;0)
ARRAY LONGINT(aNrActors;0)
ARRAY LONGINT(aSoldTickets;0)
ARRAY INTEGER(aMovieYear;0)
ARRAY TEXT(aTitles;0)
ARRAY TEXT(aDirectors;0)
ARRAY TEXT(aMedias;0)
C_LONGINT($MovieYear)
C_TEXT($tQueryTxt)
REDUCE SELECTION([MOVIES];0)
$MovieYear:=1960
$Crt_DSN:=Get current data source
ALERT("The current DSN is "+$Crt_DSN)
Begin SQL
SELECT Year_of_Movie, Title, Director, Media, Sold_Tickets
FROM MOVIES
WHERE Year_of_Movie >= :$MovieYear
INTO :aMovieYear, :aTitles, :aDirectors, :aMedias, :aSoldTickets;
End SQL
GET DATA SOURCE LIST(User data source;aDSN;aDS_Driver)
$My_ORACLE_DSN:="Test_Oracle_10g"
If(Find in array(aDSN;$My_ORACLE_DSN)>0)
SQL LOGIN($My_ORACLE_DSN;"scott";"tiger";*)
$Crt_DSN:=Get current data source
ALERT("The current DSN is "+$Crt_DSN)
ARRAY TEXT(aTitles;0)
ARRAY LONGINT(aNrActors;0)
ARRAY LONGINT(aSoldTickets;0)
ARRAY INTEGER(aMovieYear;0)
ARRAY TEXT(aTitles;0)
ARRAY TEXT(aDirectors;0)
ARRAY TEXT(aMedias;0)
Begin SQL
SELECT ENAME FROM EMP INTO :aTitles
End SQL
SQL LOGOUT
$Crt_DSN:=Get current data source
ALERT("The current DSN is "+$Crt_DSN)
Else
ALERT("ORACLE DSN not installed")
End if
これをテストするには、 "4D SQL Code Samples" データベースのメインウィンドウでConnect to ORACLE ボタンをクリックします。