GraphQLの表関数
26ai以降、SQLを使用したOracle Databaseへのアクセスに加えて、GraphQLを使用してOracle AI Databaseの表を問い合せ、JSONオブジェクトの形式で結果を取得できます。
GraphQL表関数は、データベース表を問い合せるためのSQLの代替手段をユーザーに提供するため、RDBMSへの重要な追加機能として機能します。この関数への入力は、GraphQL問合せを表す文字列で、出力はデータ型JSONの「DATA」という単一の列です。
構文:
select * from graphql('<graphql query>')すべてのチームの詳細と獲得したポイントを取得する例について考えてみます。GraphQL表関数を使用すると、必要な詳細をデータベースに問い合せることができます。
SELECT JSON_SERIALIZE(data PRETTY) AS data FROM GRAPHQL('
team {
id: team_id
name
points
}
'
);
この問合せには、すべてのチームの
team_id、nameおよびpointsのみを返すようにサーバーに要求する特定の構造があります。出力には、例1-2で作成した10チームに対応する10個のエントリが含まれています。DATA
--------------------------------------------------------------------------------
{
"id" : 301,
"name" : "McLaren Mercedes",
"points" : 666
}
{
"id" : 302,
"name" : "Ferrari",
"points" : 652
}
{
"id" : 303,
"name" : "Red Bull Racing Honda RBPT",
"points" : 589
}
{
"id" : 304,
"name" : "Mercedes",
"points" : 468
}
{
"id" : 305,
"name" : "Aston Martin Aramco Mercedes",
"points" : 94
}
{
"id" : 306,
"name" : "Alpine Renault",
"points" : 65
}
{
"id" : 307,
"name" : "Haas Ferrari",
"points" : 58
}
{
"id" : 308,
"name" : "RB Honda RBPT",
"points" : 46
}
{
"id" : 309,
"name" : "Williams Mercedes",
"points" : 17
}
{
"id" : 310,
"name" : "Kick Sauber Ferrari",
"points" : 4
}
10 rows selected.GraphQL表関数では、引用符で囲まれた識別子および完全修飾名もサポートされます。次の問合せ例は、前述の問合せと同等であり、カー・レース・データセットに定義されている10チームに対応する、id、nameおよびpointsを含む同じ出力が生成されます。
引用符で囲まれた識別子を使用した問合せ:
SELECT JSON_SERIALIZE(data PRETTY) AS data FROM GRAPHQL('
team {
id: "TEAM_ID"
name
points
}
'
);完全修飾名を使用した問合せ:
SELECT JSON_SERIALIZE(data PRETTY) AS data FROM GRAPHQL('
team {
id: team_id
team.name
points: team.points
}
'
);