Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Amikor egy függvény fut, az Azure Database for MySQL bemeneti kötés adatokat kér le egy adatbázisból, és átadja a függvény bemeneti paraméterének.
A beállítással és a konfigurációval kapcsolatos információkért tekintse meg az áttekintést.
Fontos
Ez a cikk lapokat használ a Node.js programozási modell több verziójának támogatásához. A v4-modell általánosan elérhető, és úgy lett kialakítva, hogy rugalmasabb és intuitívabb felhasználói élményt nyújtson JavaScript- és TypeScript-fejlesztők számára. A v4-modell működésével kapcsolatos további információkért tekintse meg az Azure Functions Node.js fejlesztői útmutatóját. A v3 és a v4 közötti különbségekről a migrálási útmutatóban olvashat bővebben.
Példák
C# függvényt az alábbi C# módok egyikével hozhat létre:
- Izolált feldolgozómodell: Lefordított C# függvény, amely a futtatókörnyezettől elkülönített feldolgozói folyamatban fut. Izolált feldolgozói folyamat szükséges a hosszú távú támogatáson (LTS) futó C# függvények támogatásához, valamint a .NET és a .NET-keretrendszer nem LTS-verzióihoz.
- Folyamatban lévő modell: Lefordított C# függvény, amely ugyanabban a folyamatban fut, mint az Azure Functions futtatókörnyezete.
- C#-szkript: Elsősorban C#-függvények Azure Portalon való létrehozásakor használatos.
Az Azure Database for MySQL bemeneti kötéséhez további minták érhetők el a GitHub-adattárban.
Ez a szakasz a következő példákat tartalmazza:
- HTTP-eseményindító, sor lekérése azonosító alapján egy lekérdezési sztringből
- HTTP-eseményindító, több sor lekérése az útvonaladatokból
- HTTP-eseményindító, sorok törlése
A példák egy Product osztályra és egy megfelelő adatbázistáblára vonatkoznak:
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-eseményindító, sor lekérése azonosító alapján egy lekérdezési sztringből
Az alábbi példa egy C# függvényt mutat be, amely egyetlen rekordot kér le. A függvényt egy HTTP-kérés aktiválja, amely egy lekérdezési sztringet használ az azonosító megadásához. Ez az azonosító egy rekord lekérésére Product szolgál a megadott lekérdezéssel.
Feljegyzés
A HTTP lekérdezési sztring paramétere megkülönbözteti a kis- és nagybetűk értékét.
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-eseményindító, több sor lekérése egy útvonalparaméterből
Az alábbi példa egy C# függvényt mutat be, amely beolvassa a lekérdezés által visszaadott sorokat. A függvényt egy HTTP-kérés aktiválja, amely útvonaladatokat használ egy lekérdezési paraméter értékének megadásához. Ez a paraméter a megadott lekérdezés rekordjainak szűrésére Product szolgál.
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-eseményindító, sorok törlése
Az alábbi példa egy C# függvényt mutat be, amely egy tárolt eljárást hajt végre a HTTP-kérés lekérdezési paraméterének bemenetével.
A tárolt eljárást DeleteProductsCost létre kell hozni a MySQL-adatbázisban. Ebben a példában a tárolt eljárás egyetlen rekordot vagy minden rekordot töröl a paraméter értékétől függően.
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);
}
}
}
Az Azure Database for MySQL bemeneti kötéséhez további minták érhetők el a GitHub-adattárban.
Ez a szakasz a következő példákat tartalmazza:
- HTTP-eseményindító, több sor lekérése
- HTTP-eseményindító, sor lekérése azonosító alapján egy lekérdezési sztringből
- HTTP-eseményindító, sorok törlése
A példák egy Product osztályra és egy megfelelő adatbázistáblára vonatkoznak:
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-eseményindító, több sor lekérése
Az alábbi példa egy Azure Database for MySQL bemeneti kötést mutat be egy Java-függvényben, amelyet egy HTTP-kérés aktivál. A kötés egy lekérdezésből olvas be, és az eredményeket a HTTP-válaszban adja vissza.
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-eseményindító, sor lekérése azonosító alapján egy lekérdezési sztringből
Az alábbi példa egy Azure Database for MySQL bemeneti kötést mutat be egy Java-függvényben, amelyet egy HTTP-kérés aktivál. A kötés a lekérdezési sztring egy paraméterével szűrt lekérdezésből olvas be, és a HTTP-válasz sorát adja vissza.
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-eseményindító, sorok törlése
Az alábbi példa egy Azure Database for MySQL bemeneti kötést mutat be egy Java-függvényben, amelyet egy HTTP-kérés aktivál. A kötés egy tárolt eljárást hajt végre a HTTP-kérés lekérdezési paraméterének bemenetével.
A tárolt eljárást DeleteProductsCost létre kell hozni az adatbázisban. Ebben a példában a tárolt eljárás egyetlen rekordot vagy minden rekordot töröl a paraméter értékétől függően.
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();
}
}
Az Azure Database for MySQL bemeneti kötéséhez további minták érhetők el a GitHub-adattárban.
Ez a szakasz a következő példákat tartalmazza:
- HTTP-eseményindító, több sor lekérése
- HTTP-eseményindító, sor lekérése azonosító alapján egy lekérdezési sztringből
- HTTP-eseményindító, sorok törlése
A példák egy adatbázistáblára vonatkoznak:
DROP TABLE IF EXISTS Products;
CREATE TABLE Products (
ProductId int PRIMARY KEY,
Name varchar(100) NULL,
Cost int NULL
);
HTTP-eseményindító, több sor lekérése
Az alábbi példa egy Azure Database for MySQL bemeneti kötést mutat be, amelyet egy HTTP-kérés aktivál. A kötés egy lekérdezésből olvas be, és az eredményeket a HTTP-válaszban adja vissza.
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-eseményindító, sor lekérése azonosító alapján egy lekérdezési sztringből
Az alábbi példa egy Azure Database for MySQL bemeneti kötést mutat be, amelyet egy HTTP-kérés aktivál. A kötés a lekérdezési sztring egy paraméterével szűrt lekérdezésből olvas be, és a HTTP-válasz sorát adja vissza.
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-eseményindító, sorok törlése
Az alábbi példa egy Azure Database for MySQL bemeneti kötést mutat be, amelyet egy HTTP-kérés aktivál. A kötés egy tárolt eljárást hajt végre a HTTP-kérés lekérdezési paraméterének bemenetével.
A tárolt eljárást DeleteProductsCost létre kell hozni az adatbázisban. Ebben a példában a tárolt eljárás egyetlen rekordot vagy minden rekordot töröl a paraméter értékétől függően.
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
};
}
});
Az Azure Database for MySQL bemeneti kötéséhez további minták érhetők el a GitHub-adattárban.
Ez a szakasz a következő példákat tartalmazza:
- HTTP-eseményindító, több sor lekérése
- HTTP-eseményindító, sor lekérése azonosító alapján egy lekérdezési sztringből
- HTTP-eseményindító, sorok törlése
A példák egy adatbázistáblára vonatkoznak:
DROP TABLE IF EXISTS Products;
CREATE TABLE Products (
ProductId int PRIMARY KEY,
Name varchar(100) NULL,
Cost int NULL
);
HTTP-eseményindító, több sor lekérése
Az alábbi példa egy Azure Database for MySQL bemeneti kötést mutat be egy function.json fájlban, valamint egy PowerShell-függvényt, amelyet egy HTTP-kérés aktivál. A kötés egy lekérdezésből olvas be, és az eredményeket a HTTP-válaszban adja vissza.
A következő példa a kötési adatok a function.json fájlban:
{
"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
}
A Konfiguráció szakasz ezeket a tulajdonságokat ismerteti.
Az alábbi példa a run.ps1 fájlban található függvény PowerShell-kódjának mintája:
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-eseményindító, sor lekérése azonosító alapján egy lekérdezési sztringből
Az alábbi példa egy Azure Database for MySQL bemeneti kötést mutat be egy PowerShell-függvényben, amelyet egy HTTP-kérés aktivál. A kötés a lekérdezési sztring egy paraméterével szűrt lekérdezésből olvas be, és a HTTP-válasz sorát adja vissza.
A következő példa a kötési adatok a function.json fájlban:
{
"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
}
A Konfiguráció szakasz ezeket a tulajdonságokat ismerteti.
Az alábbi példa a run.ps1 fájlban található függvény PowerShell-kódjának mintája:
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-eseményindító, sorok törlése
Az alábbi példa egy Azure Database for MySQL bemeneti kötést mutat be egy function.json fájlban, valamint egy PowerShell-függvényt, amelyet egy HTTP-kérés aktivál. A kötés egy tárolt eljárást hajt végre a HTTP-kérés lekérdezési paraméterének bemenetével.
A tárolt eljárást DeleteProductsCost létre kell hozni az adatbázisban. Ebben a példában a tárolt eljárás egyetlen rekordot vagy minden rekordot töröl a paraméter értékétől függően.
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
}
A Konfiguráció szakasz ezeket a tulajdonságokat ismerteti.
Az alábbi példa a run.ps1 fájlban található függvény PowerShell-kódjának mintája:
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
}
Az Azure Database for MySQL bemeneti kötéséhez további minták érhetők el a GitHub-adattárban.
Ez a szakasz a következő példákat tartalmazza:
- HTTP-eseményindító, több sor lekérése
- HTTP-eseményindító, sor lekérése azonosító alapján egy lekérdezési sztringből
- HTTP-eseményindító, sorok törlése
A példák egy adatbázistáblára vonatkoznak:
DROP TABLE IF EXISTS Products;
CREATE TABLE Products (
ProductId int PRIMARY KEY,
Name varchar(100) NULL,
Cost int NULL
);
Feljegyzés
A Pythonhoz az Azure Functions 1.22.0b4-es verzióját kell használnia.
HTTP-eseményindító, több sor lekérése
Az alábbi példa egy Azure Database for MySQL bemeneti kötést mutat be egy function.json fájlban és egy Python-függvényben, amelyet egy HTTP-kérés aktivál. A kötés egy lekérdezésből olvas be, és az eredményeket a HTTP-válaszban adja vissza.
Az alábbi példa a function_app.py fájlhoz tartozó Python-mintakód:
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-eseményindító, sor lekérése azonosító alapján egy lekérdezési sztringből
Az alábbi példa egy Azure Database for MySQL bemeneti kötést mutat be egy Python-függvényben, amelyet egy HTTP-kérés aktivál. A kötés a lekérdezési sztring egy paraméterével szűrt lekérdezésből olvas be, és a HTTP-válasz sorát adja vissza.
Az alábbi példa a function_app.py fájlhoz tartozó Python-mintakód:
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-eseményindító, sorok törlése
Az alábbi példa egy Azure Database for MySQL bemeneti kötést mutat be egy function.json fájlban és egy Python-függvényben, amelyet egy HTTP-kérés aktivál. A kötés egy tárolt eljárást hajt végre a HTTP-kérés lekérdezési paraméterének bemenetével.
A tárolt eljárást DeleteProductsCost létre kell hozni az adatbázisban. Ebben a példában a tárolt eljárás egyetlen rekordot vagy minden rekordot töröl a paraméter értékétől függően.
DROP PROCEDURE IF EXISTS DeleteProductsCost;
Create Procedure DeleteProductsCost(cost INT)
BEGIN
DELETE from Products where Products.cost = cost;
END
Az alábbi példa a function_app.py fájlhoz tartozó Python-mintakód:
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"
)
Attribútumok
A C#-kódtár az MySqlAttribute attribútummal deklarálja a MySQL-kötéseket a függvényen. Az attribútum a következő tulajdonságokkal rendelkezik:
| Attribútumtulajdonság | Leírás |
|---|---|
CommandText |
Szükséges. A kötés által végrehajtott tárolt eljárás MySQL-lekérdezési parancsa vagy neve. |
ConnectionStringSetting |
Szükséges. Annak az adatbázisnak a kapcsolati sztringét tartalmazó alkalmazásbeállítás neve, amelyen a lekérdezés vagy a tárolt eljárás végrehajtása történik. Ez az érték nem a tényleges kapcsolati sztring, hanem egy környezeti változó nevére kell feloldani. |
CommandType |
Szükséges. Egy CommandType lekérdezéshez és Text egy tárolt eljáráshoz tartozó értékStoredProcedure. |
Parameters |
Opcionális. A parancsnak egyetlen sztringként átadott nulla vagy több paraméterérték. A formátumot @param1=param1,@param2=param2kell követnie. A paraméter neve és paraméterértéke nem tartalmazhat vesszőt (,) vagy egyenlőségjelet (=). |
Jegyzetek
A Java-függvények futtatókörnyezeti kódtárában használja a széljegyzetet azon @MySQLInput paramétereken, amelyek értékei az Azure Database for MySQL-ből származnának. Ez a széljegyzet a következő elemeket támogatja:
| Elem | Leírás |
|---|---|
commandText |
Szükséges. A kötés által végrehajtott tárolt eljárás MySQL-lekérdezési parancsa vagy neve. |
connectionStringSetting |
Szükséges. Annak az adatbázisnak a kapcsolati sztringét tartalmazó alkalmazásbeállítás neve, amelyen a lekérdezés vagy a tárolt eljárás végrehajtása történik. Ez az érték nem a tényleges kapcsolati sztring, hanem egy környezeti változó nevére kell feloldani. |
commandType |
Szükséges. Egy CommandType lekérdezéshez és Text egy tárolt eljáráshoz tartozó értékStoredProcedure. |
name |
Szükséges. A függvénykötés egyedi neve. |
parameters |
Opcionális. A parancsnak egyetlen sztringként átadott nulla vagy több paraméterérték. A formátumot @param1=param1,@param2=param2kell követnie. A paraméter neve és paraméterértéke nem tartalmazhat vesszőt (,) vagy egyenlőségjelet (=). |
Konfiguráció
Az alábbi táblázat a metódusnak options átadott objektumon input.generic() beállítható tulajdonságokat ismerteti:
| Tulajdonság | Leírás |
|---|---|
commandText |
Szükséges. A kötés által végrehajtott tárolt eljárás MySQL-lekérdezési parancsa vagy neve. |
connectionStringSetting |
Szükséges. Annak az adatbázisnak a kapcsolati sztringét tartalmazó alkalmazásbeállítás neve, amelyen a lekérdezés vagy a tárolt eljárás végrehajtása történik. Ez az érték nem a tényleges kapcsolati sztring, hanem egy környezeti változó nevére kell feloldani. Az kapcsolati sztring érték választható kulcsszavai a MySQL-kötések kapcsolatának finomításához érhetők el. |
commandType |
Szükséges. Egy CommandType lekérdezéshez és Text egy tárolt eljáráshoz tartozó értékStoredProcedure. |
parameters |
Opcionális. A parancsnak egyetlen sztringként átadott nulla vagy több paraméterérték. A formátumot @param1=param1,@param2=param2kell követnie. A paraméter neve és paraméterértéke nem tartalmazhat vesszőt (,) vagy egyenlőségjelet (=). |
Konfiguráció
Az alábbi táblázat a function.json fájlban beállított kötéskonfigurációs tulajdonságokat ismerteti:
| Tulajdonság | Leírás |
|---|---|
type |
Szükséges. A beállításnak a mysqlkövetkezőnek kell lennie: . |
direction |
Szükséges. A beállításnak a inkövetkezőnek kell lennie: . |
name |
Szükséges. A lekérdezést jelképező változó neve függvénykódot eredményez. |
commandText |
Szükséges. A kötés által végrehajtott tárolt eljárás MySQL-lekérdezési parancsa vagy neve. |
connectionStringSetting |
Szükséges. Annak az adatbázisnak a kapcsolati sztringét tartalmazó alkalmazásbeállítás neve, amelyen a lekérdezés vagy a tárolt eljárás végrehajtása történik. Ez az érték nem a tényleges kapcsolati sztring, hanem egy környezeti változó nevére kell feloldani. Az kapcsolati sztring érték választható kulcsszavai a MySQL-kötések kapcsolatának finomításához érhetők el. |
commandType |
Szükséges. Egy CommandType lekérdezéshez és Text egy tárolt eljáráshoz tartozó értékStoredProcedure. |
parameters |
Opcionális. A parancsnak egyetlen sztringként átadott nulla vagy több paraméterérték. A formátumot @param1=param1,@param2=param2kell követnie. A paraméter neve és paraméterértéke nem tartalmazhat vesszőt (,) vagy egyenlőségjelet (=). |
Helyi fejlesztéskor adja hozzá az alkalmazásbeállításokat a gyűjtemény local.settings.json fájljáhozValues.
Használat
Az attribútum konstruktora a MySQL-parancs szövegét, a parancstípust, a paramétereket és a kapcsolati sztringbeállítás nevét veszi fel. A parancs lehet mySQL-lekérdezés a parancstípussal System.Data.CommandType.Text , vagy egy tárolt eljárás neve a parancstípussal System.Data.CommandType.StoredProcedure. A kapcsolati sztring-beállítás neve megegyezik az Azure Database for MySQL-hez tartozó kapcsolati sztringet tartalmazó alkalmazásbeállítással (a helyi fejlesztéshez local.settings.json).
Ha kivétel történik egy Azure Database for MySQL bemeneti kötés végrehajtásakor, a függvénykód nem fut. Az eredmény lehet egy hibakód, például egy HTTP-eseményindító, amely egy 500-as hibakódot ad vissza.