ストアド プロシージャは、DAB の REST または GraphQL エンドポイントとして公開できます。 これは、単純なテーブルまたはビューで処理されないカスタム ロジック、フィルター処理、検証、または計算結果を含むシナリオに役立ちます。
コンフィギュレーション
ストアド プロシージャを公開するには:
-
source.typeを"stored-procedure"に設定する -
source.objectを完全修飾プロシージャ名に設定する - 省略可能な
parametersを必要に応じて既定値で定義します -
rest.methods(たとえば、"GET"、"POST") またはrest: false -
graphql.operationを"query"または"mutation"に設定するか、省略して既定値に設定します"mutation" -
"execute"アクションを使用してアクセス許可を付与する
CLI の例
dab add GetCowrittenBooksByAuthor \
--source dbo.stp_get_all_cowritten_books_by_author \
--source.type "stored-procedure" \
--source.params "searchType:default-value" \
--permissions "anonymous:execute" \
--rest.methods "get" \
--graphql.operation "query"
構成の例
"GetCowrittenBooksByAuthor": {
"source": {
"type": "stored-procedure",
"object": "dbo.stp_get_all_cowritten_books_by_author",
"parameters": {
"searchType": "default-value"
}
},
"rest": {
"methods": [ "GET" ]
},
"graphql": {
"operation": "query"
},
"permissions": [
{
"role": "anonymous",
"actions": [ "execute" ]
}
]
}
REST のサポート
-
GETとPOSTのみサポートします -
POSTが省略された場合、既定値はmethodsになります。 - クエリ文字列を使用してパラメーターを送信します。
GET - パラメーターを JSON 本文を介して
POSTを使用して送信します。 -
"rest": falseが設定されている場合、ストアド プロシージャの REST を無効にします。
要求の例
GET /api/GetCowrittenBooksByAuthor?author=asimov
POST /api/GetCowrittenBooksByAuthor
{
"author": "asimov"
}
GraphQL のサポート
-
graphql.operationは"query"または"mutation"である必要があります。 - フィールドは、自動的に
executeで接頭辞が付けられます。例えば、executeGetCowrittenBooksByAuthor - パラメーターは GraphQL 引数として渡されます
GraphQL の例
query {
executeGetCowrittenBooksByAuthor(author: "asimov") {
id
title
}
}
制限事項
- 最初の 結果セット のみが返されます
- 改ページ、フィルター処理、および順序付けはサポートされていません
- リレーションシップはサポートされていません
- のメタデータが必要です
sys.dm_exec_describe_first_result_set - キーで 1 つの項目を返すことはできません
- パラメーター レベルの認証なし