ストアドプロシージャの定義
ストアドプロシージャはデータソースのファンクションライクなインターフェースです。データの検索、変更、削除に使用できます。ストアドプロシージャは、SELECT、INSERT、UPDATE、またはDELETE ステートメントで一般的に表すことができないアクションをモデルします。ストアドプロシージャのモデリングは、ストアドプロシージャを実装するために同じ組み込みのデータ処理操作を使用できる点で、テーブルのモデリングと同様のプロセスです。
ストアドプロシージャスキーマ vs. テーブルスキーマ
少しの変更で、同じプロセスに従って、INSERT、UPDATE、DELETE ステートメントのサポートを追加するためのストアドプロシージャを作成できます。.rsd ファイル同様、info ブロックとデータ処理操作を呼び出すscript で構成される.api ファイルにストアドプロシージャを定義します。
カラムの代わりに、info ブロックでストアドプロシージャの入力パラメータと出力パラメータを定義します。attr エレメントの代わりに、info ブロックのinput エレメントを使用して入力を定義します。
他のSQL ステートメント同様、ストアドプロシージャが実行されるときは、_input 項目には入力パラメータが含まれます。_input 項目を使用すると、ストアドプロシージャの入力を操作入力にマッピングできます。
テーブルスキーマ同様、info ブロックを使用してレスポンスを処理できます。info ブロックのoutput 属性を使用して、ストアドプロシージャの出力を記述します。出力属性では、XPath を指定して階層データのノードを抽出できます。
ストアドプロシージャの例
次のストアドプロシージャは、Id を指定してPerson レコードを取得します。この完全に機能的なスキーマでは、要求の構築方法とXPath を使用して応答を解析する方法について示します。
ストアドプロシージャはスキーマのGET メソッドを実行します。このメソッドでAPI リクエストを構築します。必要な入力が提供されていることを確認し、ない場合はapi:validate キーワードでユーザーに警告します。文字列、日付、および数式での作業を簡素化するには、Value Formatters を使用します。
api:call キーワードで操作を呼び出します。データを返すには、オペレーション呼び出しのスコープ内にapi:push キーワードを挿入します。
<api:script xmlns:api="http://apiscript.com/ns?v1" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<api:info title="GetODataPersonById" description="Retrieves the OData Person specified by Id.">
<output name="ID" other:jsonPath="/" />
<output name="EmployeeID" other:jsonPath="/json/EmployeeID" />
<output name="Name" other:jsonPath="/json/Name" />
<output name="TotalExpense" other:jsonPath="/json/TotalExpense" />
<output name="HireDate" other:jsonPath="/json/HireDate" />
<output name="Salary" other:jsonPath="/json/Salary" />
</api:info>
<api:set attr="uri" value="http://services.odata.org/V4/OData/(S(5cunewekdibfhpvoh21u2all))/OData.svc/Persons" />
<!-- The JSONPath attribute of the schema splits the JSON into rows based on elements that repeat at the same level. -->
<api:set attr="JSONPath" value="/json/" />
<!-- See the jsonproviderGet page in the Operations subchapter to set any needed HTTP parameters. -->
<api:set attr="ContentType" value="application/json" />
<!-- The GET method corresponds to EXECUTE. Within the script block, you can see the URI modified to append a query string parameter. The results of processing are pushed to the schema's output. -->
<api:script method="GET">
<api:set attr="method" value="GET"/>
<api:set attr="uri" value="[uri]([_input.Id])?$format=json"/>
<api:call op="jsonproviderGet">
<api:push />
</api:call>
</api:script>
</api:script>
キーワードの参照
このセクションで使われているキーワードの詳細情報は、API Script Reference を参照してください。