Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Wanneer een functie wordt uitgevoerd, haalt de Azure Database for MySQL-invoerbinding gegevens op uit een database en geeft deze door aan de invoerparameter van de functie.
Zie het overzicht voor meer informatie over de installatie en configuratie.
Belangrijk
In dit artikel worden tabbladen gebruikt ter ondersteuning van meerdere versies van het Node.js programmeermodel. Het v4-model is algemeen beschikbaar en is ontworpen voor een flexibelere en intuïtievere ervaring voor JavaScript- en TypeScript-ontwikkelaars. Raadpleeg de ontwikkelaarshandleiding voor Azure Functions Node.js voor meer informatie over hoe het v4-model werkt. Raadpleeg de migratiehandleiding voor meer informatie over de verschillen tussen v3 en v4.
Voorbeelden
U kunt een C#-functie maken met behulp van een van de volgende C#-modi:
- Geïsoleerd werkrolmodel: gecompileerde C#-functie die wordt uitgevoerd in een werkproces dat is geïsoleerd van de runtime. Er is een geïsoleerd werkproces vereist om C#-functies te ondersteunen die worden uitgevoerd op langetermijnondersteuning (LTS) en niet-LTS-versies voor .NET en .NET Framework.
- In-process model: gecompileerde C#-functie die wordt uitgevoerd in hetzelfde proces als de Azure Functions-runtime.
- C#-script: wordt voornamelijk gebruikt wanneer u C#-functies maakt in Azure Portal.
Meer voorbeelden voor de Azure Database for MySQL-invoerbinding zijn beschikbaar in de GitHub-opslagplaats.
Deze sectie bevat de volgende voorbeelden:
- HTTP-trigger, een rij ophalen op basis van id uit een queryreeks
- HTTP-trigger, meerdere rijen ophalen uit routegegevens
- HTTP-trigger, rijen verwijderen
De voorbeelden verwijzen naar een Product klasse en een bijbehorende databasetabel:
namespace AzureMySqlSamples.Common
{
public class Product
{
public int? ProductId { get; set; }
public string Name { get; set; }
public int Cost { get; set; }
public override bool Equals(object obj)
}
}
DROP TABLE IF EXISTS Products;
CREATE TABLE Products (
ProductId int PRIMARY KEY,
Name varchar(100) NULL,
Cost int NULL
);
HTTP-trigger, een rij ophalen op basis van id uit een queryreeks
In het volgende voorbeeld ziet u een C#-functie waarmee één record wordt opgehaald. De functie wordt geactiveerd door een HTTP-aanvraag die gebruikmaakt van een querytekenreeks om de id op te geven. Deze id wordt gebruikt om een Product record met de opgegeven query op te halen.
Notitie
De http-queryreeksparameter is hoofdlettergevoelig.
using System.Collections.Generic;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Azure.Functions.Worker.Extensions.MySql;
using Microsoft.Azure.Functions.Worker.Http;
using AzureMySqlSamples.Common;
namespace AzureMySqlSamples.InputBindingIsolatedSamples
{
public static class GetProductById
{
[Function(nameof(GetProductById))]
public static IEnumerable<Product> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "getproducts/{productId}")]
HttpRequestData req,
[MySqlInput("select * from Products where ProductId = @productId",
"MySqlConnectionString",
parameters: "@ProductId={productId}")]
IEnumerable<Product> products)
{
return products;
}
}
}
HTTP-trigger, meerdere rijen ophalen uit een routeparameter
In het volgende voorbeeld ziet u een C#-functie waarmee rijen worden opgehaald die door de query worden geretourneerd. De functie wordt geactiveerd door een HTTP-aanvraag die routegegevens gebruikt om de waarde van een queryparameter op te geven. Deze parameter wordt gebruikt om de Product records in de opgegeven query te filteren.
using System.Collections.Generic;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Azure.Functions.Worker.Extensions.MySql;
using Microsoft.Azure.Functions.Worker.Http;
using AzureMySqlSamples.Common;
namespace AzureMySqlSamples.InputBindingIsolatedSamples
{
public static class GetProducts
{
[Function(nameof(GetProducts))]
public static IEnumerable<Product> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "getproducts")]
HttpRequestData req,
[MySqlInput("select * from Products",
"MySqlConnectionString")]
IEnumerable<Product> products)
{
return products;
}
}
}
HTTP-trigger, rijen verwijderen
In het volgende voorbeeld ziet u een C#-functie waarmee een opgeslagen procedure wordt uitgevoerd met invoer van de queryparameter van de HTTP-aanvraag.
De opgeslagen procedure DeleteProductsCost moet worden gemaakt in de MySQL-database. In dit voorbeeld verwijdert de opgeslagen procedure één record of alle records, afhankelijk van de waarde van de parameter.
DROP PROCEDURE IF EXISTS DeleteProductsCost;
Create Procedure DeleteProductsCost(cost INT)
BEGIN
DELETE from Products where Products.cost = cost;
END
namespace AzureMySqlSamples.InputBindingSamples
{
public static class GetProductsStoredProcedure
{
[FunctionName(nameof(GetProductsStoredProcedure))]
public static IActionResult Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "getproducts-storedprocedure/{cost}")]
HttpRequest req,
[MySql("DeleteProductsCost",
"MySqlConnectionString",
commandType: System.Data.CommandType.StoredProcedure,
parameters: "@Cost={cost}")]
IEnumerable<Product> products)
{
return new OkObjectResult(products);
}
}
}
Meer voorbeelden voor de Azure Database for MySQL-invoerbinding zijn beschikbaar in de GitHub-opslagplaats.
Deze sectie bevat de volgende voorbeelden:
- HTTP-trigger, meerdere rijen ophalen
- HTTP-trigger, een rij ophalen op basis van id uit een queryreeks
- HTTP-trigger, rijen verwijderen
De voorbeelden verwijzen naar een Product klasse en een bijbehorende databasetabel:
package com.function.Common;
import com.fasterxml.jackson.annotation.JsonProperty;
public class Product {
@JsonProperty("ProductId")
private int ProductId;
@JsonProperty("Name")
private String Name;
@JsonProperty("Cost")
private int Cost;
public Product() {
}
DROP TABLE IF EXISTS Products;
CREATE TABLE Products (
ProductId int PRIMARY KEY,
Name varchar(100) NULL,
Cost int NULL
);
HTTP-trigger, meerdere rijen ophalen
In het volgende voorbeeld ziet u een Azure Database for MySQL-invoerbinding in een Java-functie die door een HTTP-aanvraag wordt geactiveerd. De binding leest uit een query en retourneert de resultaten in het HTTP-antwoord.
package com.function;
import com.function.Common.Product;
import com.microsoft.azure.functions.HttpMethod;
import com.microsoft.azure.functions.HttpRequestMessage;
import com.microsoft.azure.functions.HttpResponseMessage;
import com.microsoft.azure.functions.HttpStatus;
import com.microsoft.azure.functions.annotation.AuthorizationLevel;
import com.microsoft.azure.functions.annotation.FunctionName;
import com.microsoft.azure.functions.annotation.HttpTrigger;
import com.microsoft.azure.functions.mysql.annotation.CommandType;
import com.microsoft.azure.functions.mysql.annotation.MySqlInput;
import java.util.Optional;
public class GetProducts {
@FunctionName("GetProducts")
public HttpResponseMessage run(
@HttpTrigger(
name = "req",
methods = {HttpMethod.GET},
authLevel = AuthorizationLevel.ANONYMOUS,
route = "getproducts}")
HttpRequestMessage<Optional<String>> request,
@MySqlInput(
name = "products",
commandText = "SELECT * FROM Products",
commandType = CommandType.Text,
connectionStringSetting = "MySqlConnectionString")
Product[] products) {
return request.createResponseBuilder(HttpStatus.OK).header("Content-Type", "application/json").body(products).build();
}
}
HTTP-trigger, een rij ophalen op basis van id uit een queryreeks
In het volgende voorbeeld ziet u een Azure Database for MySQL-invoerbinding in een Java-functie die door een HTTP-aanvraag wordt geactiveerd. De binding leest uit een query die is gefilterd op een parameter uit de querytekenreeks en retourneert de rij in het HTTP-antwoord.
public class GetProductById {
@FunctionName("GetProductById")
public HttpResponseMessage run(
@HttpTrigger(
name = "req",
methods = {HttpMethod.GET},
authLevel = AuthorizationLevel.ANONYMOUS,
route = "getproducts/{productid}")
HttpRequestMessage<Optional<String>> request,
@MySqlInput(
name = "products",
commandText = "SELECT * FROM Products WHERE ProductId= @productId",
commandType = CommandType.Text,
parameters = "@productId={productid}",
connectionStringSetting = "MySqlConnectionString")
Product[] products) {
return request.createResponseBuilder(HttpStatus.OK).header("Content-Type", "application/json").body(products).build();
}
}
HTTP-trigger, rijen verwijderen
In het volgende voorbeeld ziet u een Azure Database for MySQL-invoerbinding in een Java-functie die door een HTTP-aanvraag wordt geactiveerd. De binding voert een opgeslagen procedure uit met invoer van de queryparameter van de HTTP-aanvraag.
De opgeslagen procedure DeleteProductsCost moet worden gemaakt in de database. In dit voorbeeld verwijdert de opgeslagen procedure één record of alle records, afhankelijk van de waarde van de parameter.
DROP PROCEDURE IF EXISTS DeleteProductsCost;
Create Procedure DeleteProductsCost(cost INT)
BEGIN
DELETE from Products where Products.cost = cost;
END
public class DeleteProductsStoredProcedure {
@FunctionName("DeleteProductsStoredProcedure")
public HttpResponseMessage run(
@HttpTrigger(
name = "req",
methods = {HttpMethod.GET},
authLevel = AuthorizationLevel.ANONYMOUS,
route = "Deleteproducts-storedprocedure/{cost}")
HttpRequestMessage<Optional<String>> request,
@MySqlInput(
name = "products",
commandText = "DeleteProductsCost",
commandType = CommandType.StoredProcedure,
parameters = "@Cost={cost}",
connectionStringSetting = "MySqlConnectionString")
Product[] products) {
return request.createResponseBuilder(HttpStatus.OK).header("Content-Type", "application/json").body(products).build();
}
}
Meer voorbeelden voor de Azure Database for MySQL-invoerbinding zijn beschikbaar in de GitHub-opslagplaats.
Deze sectie bevat de volgende voorbeelden:
- HTTP-trigger, meerdere rijen ophalen
- HTTP-trigger, een rij ophalen op basis van id uit een queryreeks
- HTTP-trigger, rijen verwijderen
De voorbeelden verwijzen naar een databasetabel:
DROP TABLE IF EXISTS Products;
CREATE TABLE Products (
ProductId int PRIMARY KEY,
Name varchar(100) NULL,
Cost int NULL
);
HTTP-trigger, meerdere rijen ophalen
In het volgende voorbeeld ziet u een Azure Database for MySQL-invoerbinding die door een HTTP-aanvraag wordt geactiveerd. De binding leest uit een query en retourneert de resultaten in het HTTP-antwoord.
import { app, HttpRequest, HttpResponseInit, input, InvocationContext } from '@azure/functions';
const mysqlInput = input.generic({
commandText: 'select * from Products',
commandType: 'Text',
connectionStringSetting: 'MySqlConnectionString',
});
export async function httpTrigger1(request: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> {
context.log('HTTP trigger and MySQL input binding function processed a request.');
const products = context.extraInputs.get(mysqlInput);
return {
jsonBody: products,
};
}
app.http('httpTrigger1', {
methods: ['GET', 'POST'],
authLevel: 'anonymous',
extraInputs: [mysqlInput],
handler: httpTrigger1,
});
const { app, input } = require('@azure/functions');
const mysqlInput = input.generic({
type: 'mysql',
commandText: 'select * from Products where Cost = @Cost',
parameters: '@Cost={Cost}',
commandType: 'Text',
connectionStringSetting: 'MySqlConnectionString'
})
app.http('GetProducts', {
methods: ['GET', 'POST'],
authLevel: 'anonymous',
route: 'getproducts/{cost}',
extraInputs: [mysqlInput],
handler: async (request, context) => {
const products = JSON.stringify(context.extraInputs.get(mysqlInput));
return {
status: 200,
body: products
};
}
});
HTTP-trigger, een rij ophalen op basis van id uit een queryreeks
In het volgende voorbeeld ziet u een Azure Database for MySQL-invoerbinding die door een HTTP-aanvraag wordt geactiveerd. De binding leest uit een query die is gefilterd op een parameter uit de querytekenreeks en retourneert de rij in het HTTP-antwoord.
import { app, HttpRequest, HttpResponseInit, input, InvocationContext } from '@azure/functions';
const mysqlInput = input.generic({
commandText: 'select * from Products where ProductId= @productId',
commandType: 'Text',
parameters: '@productId={productid}',
connectionStringSetting: 'MySqlConnectionString',
});
export async function httpTrigger1(request: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> {
context.log('HTTP trigger and MySQL input binding function processed a request.');
const products = context.extraInputs.get(mysqlInput);
return {
jsonBody: products,
};
}
app.http('httpTrigger1', {
methods: ['GET', 'POST'],
authLevel: 'anonymous',
extraInputs: [mysqlInput],
handler: httpTrigger1,
});
const { app, input } = require('@azure/functions');
const mysqlInput = input.generic({
type: 'mysql',
commandText: 'select * from Products where ProductId= @productId',
commandType: 'Text',
parameters: '@productId={productid}',
connectionStringSetting: 'MySqlConnectionString'
})
app.http('GetProducts', {
methods: ['GET', 'POST'],
authLevel: 'anonymous',
route: 'getproducts/{productid}',
extraInputs: [mysqlInput],
handler: async (request, context) => {
const products = JSON.stringify(context.extraInputs.get(mysqlInput));
return {
status: 200,
body: products
};
}
});
HTTP-trigger, rijen verwijderen
In het volgende voorbeeld ziet u een Azure Database for MySQL-invoerbinding die door een HTTP-aanvraag wordt geactiveerd. De binding voert een opgeslagen procedure uit met invoer van de queryparameter van de HTTP-aanvraag.
De opgeslagen procedure DeleteProductsCost moet worden gemaakt in de database. In dit voorbeeld verwijdert de opgeslagen procedure één record of alle records, afhankelijk van de waarde van de parameter.
DROP PROCEDURE IF EXISTS DeleteProductsCost;
Create Procedure DeleteProductsCost(cost INT)
BEGIN
DELETE from Products where Products.cost = cost;
END
import { app, HttpRequest, HttpResponseInit, input, InvocationContext } from '@azure/functions';
const mysqlInput = input.generic({
commandText: 'DeleteProductsCost',
commandType: 'StoredProcedure',
parameters: '@Cost={cost}',
connectionStringSetting: 'MySqlConnectionString',
});
export async function httpTrigger1(request: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> {
context.log('HTTP trigger and MySQL input binding function processed a request.');
const products = context.extraInputs.get(mysqlInput);
return {
jsonBody: products,
};
}
app.http('httpTrigger1', {
methods: ['GET', 'POST'],
authLevel: 'anonymous',
extraInputs: [mysqlInput],
handler: httpTrigger1,
});
const { app, input } = require('@azure/functions');
const mysqlInput = input.generic({
type: 'mysql',
commandText: 'DeleteProductsCost',
commandType: 'StoredProcedure',
parameters: '@Cost={cost}',
connectionStringSetting: 'MySqlConnectionString'
})
app.http('httpTrigger1', {
methods: ['POST'],
authLevel: 'anonymous',
route: 'DeleteProductsByCost',
extraInputs: [mysqlInput],
handler: async (request, context) => {
const products = JSON.stringify(context.extraInputs.get(mysqlInput));
return {
status: 200,
body: products
};
}
});
Meer voorbeelden voor de Azure Database for MySQL-invoerbinding zijn beschikbaar in de GitHub-opslagplaats.
Deze sectie bevat de volgende voorbeelden:
- HTTP-trigger, meerdere rijen ophalen
- HTTP-trigger, een rij ophalen op basis van id uit een queryreeks
- HTTP-trigger, rijen verwijderen
De voorbeelden verwijzen naar een databasetabel:
DROP TABLE IF EXISTS Products;
CREATE TABLE Products (
ProductId int PRIMARY KEY,
Name varchar(100) NULL,
Cost int NULL
);
HTTP-trigger, meerdere rijen ophalen
In het volgende voorbeeld ziet u een Azure Database for MySQL-invoerbinding in een function.json-bestand en een PowerShell-functie die door een HTTP-aanvraag wordt geactiveerd. De binding leest uit een query en retourneert de resultaten in het HTTP-antwoord.
Het volgende voorbeeld bestaat uit bindingsgegevens in het function.json-bestand:
{
"bindings": [
{
"authLevel": "function",
"name": "Request",
"type": "httpTrigger",
"direction": "in",
"methods": [
"get"
],
"route": "getproducts/{cost}"
},
{
"name": "response",
"type": "http",
"direction": "out"
},
{
"name": "products",
"type": "mysql",
"direction": "in",
"commandText": "select * from Products",
"commandType": "Text",
"connectionStringSetting": "MySqlConnectionString"
}
],
"disabled": false
}
In de sectie Configuratie worden deze eigenschappen uitgelegd.
Het volgende voorbeeld is PowerShell-voorbeeldcode voor de functie in het run.ps1-bestand:
using namespace System.Net
param($Request, $TriggerMetadata, $products)
Write-Host "PowerShell function with MySql Input Binding processed a request."
Push-OutputBinding -Name response -Value ([HttpResponseContext]@{
StatusCode = [System.Net.HttpStatusCode]::OK
Body = $products
})
HTTP-trigger, een rij ophalen op basis van id uit een queryreeks
In het volgende voorbeeld ziet u een Azure Database for MySQL-invoerbinding in een PowerShell-functie die door een HTTP-aanvraag wordt geactiveerd. De binding leest uit een query die is gefilterd op een parameter uit de querytekenreeks en retourneert de rij in het HTTP-antwoord.
Het volgende voorbeeld bestaat uit bindingsgegevens in het function.json-bestand:
{
"bindings": [
{
"authLevel": "function",
"name": "Request",
"type": "httpTrigger",
"direction": "in",
"methods": [
"get"
],
"route": "getproducts/{productid}"
},
{
"name": "response",
"type": "http",
"direction": "out"
},
{
"name": "products",
"type": "mysql",
"direction": "in",
"commandText": "select * from Products where ProductId= @productId",
"commandType": "Text",
"parameters": "MySqlConnectionString",
"connectionStringSetting": "MySqlConnectionString"
}
],
"disabled": false
}
In de sectie Configuratie worden deze eigenschappen uitgelegd.
Het volgende voorbeeld is PowerShell-voorbeeldcode voor de functie in het run.ps1-bestand:
using namespace System.Net
param($Request, $TriggerMetadata, $products)
Write-Host "PowerShell function with MySql Input Binding processed a request."
Push-OutputBinding -Name response -Value ([HttpResponseContext]@{
StatusCode = [System.Net.HttpStatusCode]::OK
Body = $products
})
HTTP-trigger, rijen verwijderen
In het volgende voorbeeld ziet u een Azure Database for MySQL-invoerbinding in een function.json-bestand en een PowerShell-functie die door een HTTP-aanvraag wordt geactiveerd. De binding voert een opgeslagen procedure uit met invoer van de queryparameter van de HTTP-aanvraag.
De opgeslagen procedure DeleteProductsCost moet worden gemaakt in de database. In dit voorbeeld verwijdert de opgeslagen procedure één record of alle records, afhankelijk van de waarde van de parameter.
DROP PROCEDURE IF EXISTS DeleteProductsCost;
Create Procedure DeleteProductsCost(cost INT)
BEGIN
DELETE from Products where Products.cost = 'cost';
END
{
"bindings": [
{
"authLevel": "function",
"name": "Request",
"type": "httpTrigger",
"direction": "in",
"methods": [
"get"
],
"route": "deleteproducts-storedprocedure/{cost}"
},
{
"name": "response",
"type": "http",
"direction": "out"
},
{
"name": "products",
"type": "mysql",
"direction": "in",
"commandText": "DeleteProductsCost",
"commandType": "StoredProcedure",
"parameters": "@Cost={cost}",
"connectionStringSetting": "MySqlConnectionString"
}
],
"disabled": false
}
In de sectie Configuratie worden deze eigenschappen uitgelegd.
Het volgende voorbeeld is PowerShell-voorbeeldcode voor de functie in het run.ps1-bestand:
using namespace System.Net
param($Request, $TriggerMetadata, $products)
Write-Host "PowerShell function with MySql Input Binding processed a request."
Push-OutputBinding -Name response -Value ([HttpResponseContext]@{
StatusCode = [System.Net.HttpStatusCode]::OK
Body = $products
}
Meer voorbeelden voor de Azure Database for MySQL-invoerbinding zijn beschikbaar in de GitHub-opslagplaats.
Deze sectie bevat de volgende voorbeelden:
- HTTP-trigger, meerdere rijen ophalen
- HTTP-trigger, een rij ophalen op basis van id uit een queryreeks
- HTTP-trigger, rijen verwijderen
De voorbeelden verwijzen naar een databasetabel:
DROP TABLE IF EXISTS Products;
CREATE TABLE Products (
ProductId int PRIMARY KEY,
Name varchar(100) NULL,
Cost int NULL
);
Notitie
U moet Azure Functions versie 1.22.0b4 voor Python gebruiken.
HTTP-trigger, meerdere rijen ophalen
In het volgende voorbeeld ziet u een Azure Database for MySQL-invoerbinding in een function.json-bestand en een Python-functie die door een HTTP-aanvraag wordt geactiveerd. De binding leest uit een query en retourneert de resultaten in het HTTP-antwoord.
Het volgende voorbeeld is python-voorbeeldcode voor het function_app.py-bestand:
import azure.functions as func
import datetime
import json
import logging
app = func.FunctionApp()
@app.generic_trigger(arg_name="req", type="httpTrigger", route="getproducts/{cost}")
@app.generic_output_binding(arg_name="$return", type="http")
@app.generic_input_binding(arg_name="products", type="mysql",
commandText= "select * from Products",
command_type="Text",
connection_string_setting="MySqlConnectionString")
def mysql_test(req: func.HttpRequest, products: func.MySqlRowList) -> func.HttpResponse:
rows = list(map(lambda r: json.loads(r.to_json()), products))
return func.HttpResponse(
json.dumps(rows),
status_code=200,
mimetype="application/json"
)
HTTP-trigger, een rij ophalen op basis van id uit een queryreeks
In het volgende voorbeeld ziet u een Azure Database for MySQL-invoerbinding in een Python-functie die door een HTTP-aanvraag wordt geactiveerd. De binding leest uit een query die is gefilterd op een parameter uit de querytekenreeks en retourneert de rij in het HTTP-antwoord.
Het volgende voorbeeld is python-voorbeeldcode voor het function_app.py-bestand:
import azure.functions as func
import datetime
import json
import logging
app = func.FunctionApp()
@app.generic_trigger(arg_name="req", type="httpTrigger", route="getproducts/{cost}")
@app.generic_output_binding(arg_name="$return", type="http")
@app.generic_input_binding(arg_name="products", type="mysql",
commandText= "select * from Products where ProductId= @productId",
command_type="Text",
parameters= "@productId={productid}",
connection_string_setting="MySqlConnectionString")
def mysql_test(req: func.HttpRequest, products: func.MySqlRowList) -> func.HttpResponse:
rows = list(map(lambda r: json.loads(r.to_json()), products))
return func.HttpResponse(
json.dumps(rows),
status_code=200,
mimetype="application/json"
)
HTTP-trigger, rijen verwijderen
In het volgende voorbeeld ziet u een Azure Database for MySQL-invoerbinding in een function.json-bestand en een Python-functie die door een HTTP-aanvraag wordt geactiveerd. De binding voert een opgeslagen procedure uit met invoer van de queryparameter van de HTTP-aanvraag.
De opgeslagen procedure DeleteProductsCost moet worden gemaakt in de database. In dit voorbeeld verwijdert de opgeslagen procedure één record of alle records, afhankelijk van de waarde van de parameter.
DROP PROCEDURE IF EXISTS DeleteProductsCost;
Create Procedure DeleteProductsCost(cost INT)
BEGIN
DELETE from Products where Products.cost = cost;
END
Het volgende voorbeeld is python-voorbeeldcode voor het function_app.py-bestand:
import azure.functions as func
import datetime
import json
import logging
app = func.FunctionApp()
@app.generic_trigger(arg_name="req", type="httpTrigger", route="getproducts/{cost}")
@app.generic_output_binding(arg_name="$return", type="http")
@app.generic_input_binding(arg_name="products", type="mysql",
commandText= "DeleteProductsCost",
command_type="StoredProcedure",
parameters= "@Cost={cost}",
connection_string_setting="MySqlConnectionString")
def mysql_test(req: func.HttpRequest, products: func.MySqlRowList) -> func.HttpResponse:
rows = list(map(lambda r: json.loads(r.to_json()), products))
return func.HttpResponse(
json.dumps(rows),
status_code=200,
mimetype="application/json"
)
Kenmerken
De C#-bibliotheek gebruikt het MySqlAttribute kenmerk om de MySQL-bindingen voor de functie te declareren. Het kenmerk heeft de volgende eigenschappen:
| Kenmerkeigenschap | Beschrijving |
|---|---|
CommandText |
Vereist. De MySQL-queryopdracht of -naam van de opgeslagen procedure die door de binding wordt uitgevoerd. |
ConnectionStringSetting |
Vereist. De naam van een app-instelling die de verbindingsreeks voor de database bevat waarop de query of opgeslagen procedure wordt uitgevoerd. Deze waarde is niet de werkelijke verbindingsreeks en moet in plaats daarvan worden omgezet in de naam van een omgevingsvariabele. |
CommandType |
Vereist. Een CommandType waarde, die voor een query en Text voor een opgeslagen procedure isStoredProcedure. |
Parameters |
Optioneel. Nul of meer parameterwaarden die tijdens de uitvoering aan de opdracht zijn doorgegeven als één tekenreeks. Moet de notatie @param1=param1,@param2=param2volgen. De parameternaam en parameterwaarde mogen geen komma (,) of een gelijkteken (=) bevatten. |
Aantekeningen
Gebruik in de Runtime-bibliotheek van Java-functies de @MySQLInput aantekening voor parameters waarvan de waarden afkomstig zijn van Azure Database for MySQL. Deze aantekening ondersteunt de volgende elementen:
| Onderdeel | Beschrijving |
|---|---|
commandText |
Vereist. De MySQL-queryopdracht of -naam van de opgeslagen procedure die door de binding wordt uitgevoerd. |
connectionStringSetting |
Vereist. De naam van een app-instelling die de verbindingsreeks voor de database bevat waarop de query of opgeslagen procedure wordt uitgevoerd. Deze waarde is niet de werkelijke verbindingsreeks en moet in plaats daarvan worden omgezet in de naam van een omgevingsvariabele. |
commandType |
Vereist. Een CommandType waarde, die voor een query en Text voor een opgeslagen procedure isStoredProcedure. |
name |
Vereist. De unieke naam van de functiebinding. |
parameters |
Optioneel. Nul of meer parameterwaarden die tijdens de uitvoering aan de opdracht zijn doorgegeven als één tekenreeks. Moet de notatie @param1=param1,@param2=param2volgen. De parameternaam en parameterwaarde mogen geen komma (,) of een gelijkteken (=) bevatten. |
Configuratie
In de volgende tabel worden de eigenschappen uitgelegd die u kunt instellen voor het options object dat aan de input.generic() methode is doorgegeven:
| Eigenschappen | Beschrijving |
|---|---|
commandText |
Vereist. De MySQL-queryopdracht of -naam van de opgeslagen procedure die door de binding wordt uitgevoerd. |
connectionStringSetting |
Vereist. De naam van een app-instelling die de verbindingsreeks voor de database bevat waarop de query of opgeslagen procedure wordt uitgevoerd. Deze waarde is niet de werkelijke verbindingsreeks en moet in plaats daarvan worden omgezet in de naam van een omgevingsvariabele. Optionele trefwoorden in de verbindingsreeks-waarde zijn beschikbaar om de connectiviteit van MySQL-bindingen te verfijnen. |
commandType |
Vereist. Een CommandType waarde, die voor een query en Text voor een opgeslagen procedure isStoredProcedure. |
parameters |
Optioneel. Nul of meer parameterwaarden die tijdens de uitvoering aan de opdracht zijn doorgegeven als één tekenreeks. Moet de notatie @param1=param1,@param2=param2volgen. De parameternaam en parameterwaarde mogen geen komma (,) of een gelijkteken (=) bevatten. |
Configuratie
In de volgende tabel worden de bindingsconfiguratie-eigenschappen uitgelegd die u in het function.json-bestand hebt ingesteld:
| Eigenschappen | Beschrijving |
|---|---|
type |
Vereist. Moet worden ingesteld op mysql. |
direction |
Vereist. Moet worden ingesteld op in. |
name |
Vereist. De naam van de variabele die de query vertegenwoordigt, resulteert in functiecode. |
commandText |
Vereist. De MySQL-queryopdracht of -naam van de opgeslagen procedure die door de binding wordt uitgevoerd. |
connectionStringSetting |
Vereist. De naam van een app-instelling die de verbindingsreeks voor de database bevat waarop de query of opgeslagen procedure wordt uitgevoerd. Deze waarde is niet de werkelijke verbindingsreeks en moet in plaats daarvan worden omgezet in de naam van een omgevingsvariabele. Optionele trefwoorden in de verbindingsreeks-waarde zijn beschikbaar om de connectiviteit van MySQL-bindingen te verfijnen. |
commandType |
Vereist. Een CommandType waarde, die voor een query en Text voor een opgeslagen procedure isStoredProcedure. |
parameters |
Optioneel. Nul of meer parameterwaarden die tijdens de uitvoering aan de opdracht zijn doorgegeven als één tekenreeks. Moet de notatie @param1=param1,@param2=param2volgen. De parameternaam en parameterwaarde mogen geen komma (,) of een gelijkteken (=) bevatten. |
Wanneer u lokaal ontwikkelt, voegt u uw toepassingsinstellingen toe aan het local.settings.json-bestand in de Values verzameling.
Gebruik
De constructor van het kenmerk gebruikt de mySQL-opdrachttekst, het opdrachttype, de parameters en de naam van de instelling van de verbindingsreeks. De opdracht kan een MySQL-query zijn met het opdrachttype System.Data.CommandType.Text of een opgeslagen procedurenaam met het opdrachttype System.Data.CommandType.StoredProcedure. De naam van de verbindingsreeksinstelling komt overeen met de toepassingsinstelling (in local.settings.json voor lokale ontwikkeling) die de verbindingsreeks bevat met Azure Database for MySQL.
Als er een uitzondering optreedt wanneer een Azure Database for MySQL-invoerbinding wordt uitgevoerd, wordt de functiecode niet meer uitgevoerd. Het resultaat kan een foutcode zijn, zoals een HTTP-trigger die een 500-foutcode retourneert.