次の方法で共有


データ API ビルダーでのストアド プロシージャの使用

ストアド プロシージャは、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 のサポート

  • GETPOSTのみサポートします
  • 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 つの項目を返すことはできません
  • パラメーター レベルの認証なし