Share via


Opgeslagen procedures gebruiken met Fabric-API voor GraphQL

Met De Microsoft Fabric-API voor GraphQL kunt u eenvoudig query's uitvoeren op gegevens uit een Fabric SQL-database en andere Fabric-gegevensbronnen, zoals Data Warehouse en Lakehouse, met sterk getypte schema's en een uitgebreide querytaal, zodat ontwikkelaars een intuïtieve API kunnen maken zonder aangepaste servercode te schrijven. U kunt opgeslagen procedures gebruiken om complexe bedrijfslogica in te kapselen en opnieuw te gebruiken, inclusief invoervalidatie en gegevenstransformatie.

In dit voorbeeld leert u hoe u een opgeslagen procedure gebruikt om nieuwe producten te registreren, met logica aan de serverzijde voor validatie, opmaak en het genereren van id's, die allemaal worden weergegeven via een GraphQL-mutatie in Fabric.

Aan de slag

We beginnen met het maken van een SQL-database in Fabric:

  1. Selecteer nieuw item in uw Fabric-werkruimte en vervolgens SQL-database (preview).
  2. Geef uw database een naam en selecteer vervolgens Voorbeeldgegevens om snel alle vereiste tabellen en gegevens in uw database te maken.

Scenario: een nieuw product registreren

Stel dat u een nieuw product wilt maken met:

  • Validatie van prijslogica (bijvoorbeeld. ListPrice > StandardCost)
  • Transformatie (bijvoorbeeld, de eerste letter van de productnaam met een hoofdletter schrijven, trimmen en het productnummer vervolgens in hoofdletters omzetten)
  • Product-id genereren (door de nieuwste product-id te verhogen)

Stap 1: De opgeslagen procedure maken

Hier volgt een T-SQL-opgeslagen procedure die alle bedrijfslogica inkapselt die we nodig hebben. Klik in uw SQL-database op Nieuwe query en gebruik de volgende instructie:

CREATE PROCEDURE SalesLT.RegisterProduct
  @Name nvarchar(50),
  @ProductNumber nvarchar(25),
  @StandardCost money,
  @ListPrice money,
  @SellStartDate datetime
AS
BEGIN
  SET NOCOUNT ON;
  SET IDENTITY\_INSERT SalesLT.Product ON;

  -- Validate pricing logic
  IF @ListPrice <= @StandardCost
    THROW 50005, 'ListPrice must be greater than StandardCost.', 1;

-- Transform product name: capitalize first letter only
  DECLARE @CleanName nvarchar(50);
  SET @CleanName = UPPER(LEFT(LTRIM(RTRIM(@Name)), 1)) + LOWER(SUBSTRING(LTRIM(RTRIM(@Name)), 2, 49));

  -- Trim and uppercase product number
  DECLARE @CleanProductNumber nvarchar(25);
  SET @CleanProductNumber = UPPER(LTRIM(RTRIM(@ProductNumber)));

  -- Generate ProductID by incrementing the latest existing ID
  DECLARE @ProductID int;
  SELECT @ProductID = ISNULL(MAX(ProductID), 0) + 1 FROM SalesLT.Product;

  INSERT INTO SalesLT.Product (
    ProductID,
    Name,
    ProductNumber,
    StandardCost,
    ListPrice,
    SellStartDate
  )
  OUTPUT 
    inserted.ProductID,
    inserted.Name,
    inserted.ProductNumber,
    inserted.StandardCost,
    inserted.ListPrice,
    inserted.SellStartDate
  VALUES (
    @ProductID,
    @CleanName,
    @CleanProductNumber,
    @StandardCost,
    @ListPrice,
    @SellStartDate
  );
END;

Klik op Uitvoeren om de uitvoering te testen. U ziet een nieuwe opgeslagen procedure RegisterProduct onder de map Opgeslagen procedures in de database SalesLT . Gebruik de volgende query om de procedurelogica te testen:

DECLARE @RC int
DECLARE @Name nvarchar(50)
DECLARE @ProductNumber nvarchar(25)
DECLARE @StandardCost money
DECLARE @ListPrice money
DECLARE @SellStartDate datetime

-- TODO: Set parameter values here.
Set @Name = 'test product'       
Set @ProductNumber = 'tst-0012'
Set @StandardCost = '10.00'
Set @ListPrice = '9.00'
Set @SellStartDate = '2025-05-01T00:00:00Z'

EXECUTE @RC = \[SalesLT\].\[RegisterProduct\] 
   @Name
  ,@ProductNumber
  ,@StandardCost
  ,@ListPrice
  ,@SellStartDate
GO

Stap 2: Een GraphQL-API maken

Het maken van een API uit uw SQL-tabel is snel, eenvoudig en overzichtelijk. U hoeft alleen op de knop Nieuwe API voor GraphQL in het lint van de SQL-database te klikken en uw API een naam te geven.

Selecteer vervolgens de SalesLT-tabellen in uw database en de opgeslagen procedure die we zojuist hebben gemaakt en klik vervolgens op Laden:

Gegevensscherm ophalen om tabellen en procedures te selecteren in API voor GraphQL.

De GraphQL-API, het schema en alle resolvers worden in seconden automatisch gegenereerd op basis van de SQL-tabellen en opgeslagen procedure.

Stap 3: De procedure aanroepen vanuit GraphQL

Zodra de API gereed is, wordt de opgeslagen procedure beschikbaar als mutatie in het Fabric GraphQL-schema. Ga naar de query-editor en voer de volgende mutatie uit:

mutation {
   executeRegisterProduct (
    Name: " graphQL swag ",
    ProductNumber: "gql-swag-001",
    StandardCost: 10.0,
    ListPrice: 15.0,
    SellStartDate: "2025-05-01T00:00:00Z"
  ) {
ProductID
    Name
    ProductNumber
    StandardCost
    ListPrice
    SellStartDate
   }
}

Mutatie in de GraphQL API-portal waarin de resultaten worden weergegeven.

Tips

  • Fabric GraphQL genereert automatisch mutatievelden voor opgeslagen procedures die een resultatenset retourneren die is gedefinieerd in de uitvoer van de procedure.
  • Bedrijfslogica bevindt zich binnen de procedure, niet de client.
  • Gebruik deterministische id-generatie alleen als u niet afhankelijk bent van identiteitskolommen.

Het beschikbaar maken van opgeslagen procedures via Fabric-API's biedt u de mogelijkheid om robuuste, consistente regels in SQL voor uw gegevens te definiëren en deze op schone wijze te openen via GraphQL.