Megosztás a következőn keresztül:


Tárolt eljárások használata a Data API Builderben

A tárolt eljárások REST- vagy GraphQL-végpontként is közzétehetők a DAB-ban. Ez olyan helyzetekben hasznos, amelyek egyéni logikát, szűrést, ellenőrzést vagy számított eredményeket foglalnak magukban, amelyeket nem egyszerű táblák vagy nézetek kezelnek.

Konfiguráció

Tárolt eljárás felfedéséhez:

  • Állítsa be a source.type-t a "stored-procedure"-re.
  • Állítsa be source.object a teljesen megfelelő eljárásnevet
  • Határozza meg az opcionális parameters elemeket az alapértelmezett értékeikkel, ha szükséges
  • Beállítás rest.methods (például, "GET", "POST") vagy rest: false
  • Állítsa be graphql.operation"query" vagy "mutation" értékre, vagy hagyja ki az "mutation" alapértelmezettként.
  • Engedély megadása a "execute" művelet használatával

Példa parancssori felületre

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"

Példa konfigurációra

"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-támogatás

  • Csak GET és POST támogatott
  • Alapértelmezett érték, POST ha methods nincs megadva
  • Paraméterek küldése lekérdezési sztringen keresztül a GET
  • JSON-törzsben paramétereket küld POST
  • A REST letiltása tárolt eljárás esetén, ha "rest": false be van állítva

Példakérések

GET /api/GetCowrittenBooksByAuthor?author=asimov

POST /api/GetCowrittenBooksByAuthor

{
  "author": "asimov"
}

GraphQL-támogatás

  • Ahhoz, hogy graphql.operation"query" vagy "mutation" legyen, szükség van rá.
  • A mezők automatikusan előtaggal vannak elnevezve execute, például: executeGetCowrittenBooksByAuthor
  • A paraméterek GraphQL-argumentumként lesznek átadva

Példa GraphQL

query {
  executeGetCowrittenBooksByAuthor(author: "asimov") {
    id
    title
  }
}

Korlátozások

  • Csak az első eredményhalmaz lesz visszaadva
  • A lapozás, a szűrés és a rendezés nem támogatott
  • A kapcsolatok nincsenek támogatva
  • Metaadatokat igényel a sys.dm_exec_describe_first_result_set
  • Nem lehet egyetlen elemet kulcs szerint visszaadni
  • Nincs paraméterszintű engedélyezés