Azure Functions 的 Azure Database for MySQL 输入绑定

函数运行时,Azure Database for MySQL 输入绑定将从数据库检索数据,并将其传递给函数的输入参数。

有关设置和配置的信息,请参阅 概述

重要

本文使用选项卡来支持多个版本的 Node.js 编程模型。 v4 模型目前处于预览状态,旨在为 JavaScript 和 TypeScript 开发人员提供更为灵活和直观的体验。 在升级指南中详细了解 v3 和 v4 之间的差异。

示例

可使用以下 C# 模式之一来创建 C# 函数:

  • 进程内类库:编译的 C# 函数,该函数在与 Functions 运行时相同的进程中运行。
  • 独立工作进程类库:编译的 C# 函数,该函数在独立于运行时的工作进程中运行。 需要独立工作进程才能支持在 LTS 和非 LTS 版 .NET 和 .NET Framework 上运行的 C# 函数。
  • C# 脚本:主要在 Azure 门户中创建 C# 函数时使用。

GitHub 存储库中提供了更多有关 Azure Database for MySQL 输入绑定的示例。

本部分包含以下示例:

这些示例引用 Product 类和相应的数据库表:

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 触发器,从查询字符串按 ID 获取行

以下示例演示检索单个记录的 C# 函数。 此函数由 HTTP 请求触发,该请求使用查询字符串来指定 ID。 该 ID 用于使用指定的查询检索 Product 记录。

注意

HTTP 查询字符串参数区分大小写。

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 触发器,从路由参数获取多行

下面的示例演示了一个 C# 函数 ,该函数检索查询返回的行。 此函数由 HTTP 请求触发,该请求使用路由数据来指定查询参数的值。 该参数在指定的查询中用于筛选 Product 记录。

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 触发器,删除行

以下示例演示一个 C# 函数 ,该函数使用 HTTP 请求的查询参数的输入执行存储过程。

必须在 MySQL 数据库上创建存储过程 DeleteProductsCost。 在此示例中,存储过程根据参数的值删除单个记录或所有记录。

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);
        }
    }
}

GitHub 存储库中提供了更多有关 Azure Database for MySQL 输入绑定的示例。

本部分包含以下示例:

这些示例引用 Product 类和相应的数据库表:

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 触发器,获取多行

以下示例演示 HTTP 请求触发的 Java 函数中的 Azure Database for MySQL 输入绑定。 绑定从查询读取,并在 HTTP 响应中返回结果。

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 触发器,从查询字符串按 ID 获取行

以下示例演示 HTTP 请求触发的 Java 函数中的 Azure Database for MySQL 输入绑定。 绑定从查询字符串中的参数筛选的查询中读取,并返回 HTTP 响应中的行。

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 触发器,删除行

以下示例演示 HTTP 请求触发的 Java 函数中的 Azure Database for MySQL 输入绑定。 绑定使用 HTTP 请求的查询参数的输入执行存储过程。

必须在数据库上创建存储过程 DeleteProductsCost。 在此示例中,存储过程根据参数的值删除单个记录或所有记录。

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();
    }
}

GitHub 存储库中提供了更多有关 Azure Database for MySQL 输入绑定的示例。

本部分包含以下示例:

以下示例引用数据库表:

DROP TABLE IF EXISTS Products;

CREATE TABLE Products (
  ProductId int PRIMARY KEY,
  Name varchar(100) NULL,
  Cost int NULL
);

HTTP 触发器,获取多行

以下示例演示 HTTP 请求触发的 Azure Database for MySQL 输入绑定。 绑定从查询读取,并在 HTTP 响应中返回结果。

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 触发器,从查询字符串按 ID 获取行

以下示例演示 HTTP 请求触发的 Azure Database for MySQL 输入绑定。 绑定从查询字符串中的参数筛选的查询中读取,并返回 HTTP 响应中的行。

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 触发器,删除行

以下示例演示 HTTP 请求触发的 Azure Database for MySQL 输入绑定。 绑定使用 HTTP 请求的查询参数的输入执行存储过程。

必须在数据库上创建存储过程 DeleteProductsCost。 在此示例中,存储过程根据参数的值删除单个记录或所有记录。

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
        };
    }
});

GitHub 存储库中提供了更多有关 Azure Database for MySQL 输入绑定的示例。

本部分包含以下示例:

以下示例引用数据库表:

DROP TABLE IF EXISTS Products;

CREATE TABLE Products (
  ProductId int PRIMARY KEY,
  Name varchar(100) NULL,
  Cost int NULL
);

HTTP 触发器,获取多行

以下示例演示 function.json 文件中的 Azure Database for MySQL 输入绑定,以及 HTTP 请求触发的 PowerShell 函数。 绑定从查询读取,并在 HTTP 响应中返回结果。

以下示例是 function.json 文件中的绑定数据:

{
  "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
}

“配置”部分介绍了这些属性。

以下示例是 run.ps1 文件中函数的示例 PowerShell 代码:

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 触发器,从查询字符串按 ID 获取行

以下示例演示 HTTP 请求触发的 PowerShell 函数中的 Azure Database for MySQL 输入绑定。 绑定从查询字符串中的参数筛选的查询中读取,并返回 HTTP 响应中的行。

以下示例是 function.json 文件中的绑定数据:

{
  "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
}

“配置”部分介绍了这些属性。

以下示例是 run.ps1 文件中函数的示例 PowerShell 代码:

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 触发器,删除行

以下示例演示 function.json 文件中的 Azure Database for MySQL 输入绑定,以及 HTTP 请求触发的 PowerShell 函数。 绑定使用 HTTP 请求的查询参数的输入执行存储过程。

必须在数据库上创建存储过程 DeleteProductsCost。 在此示例中,存储过程根据参数的值删除单个记录或所有记录。

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
}

“配置”部分介绍了这些属性。

以下示例是 run.ps1 文件中函数的示例 PowerShell 代码:

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
}

GitHub 存储库中提供了更多有关 Azure Database for MySQL 输入绑定的示例。

本部分包含以下示例:

以下示例引用数据库表:

DROP TABLE IF EXISTS Products;

CREATE TABLE Products (
  ProductId int PRIMARY KEY,
  Name varchar(100) NULL,
  Cost int NULL
);

注意

必须使用适用于 Python 的 Azure Functions 版本 1.22.0b4。

HTTP 触发器,获取多行

以下示例演示 function.json 文件中的 Azure Database for MySQL 输入绑定,以及 HTTP 请求触发的 Python 函数。 绑定从查询读取,并在 HTTP 响应中返回结果。

以下示例是function_app.py文件的示例 Python 代码:

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 触发器,从查询字符串按 ID 获取行

以下示例演示 HTTP 请求触发的 Python 函数中的 Azure Database for MySQL 输入绑定。 绑定从查询字符串中的参数筛选的查询中读取,并返回 HTTP 响应中的行。

以下示例是function_app.py文件的示例 Python 代码:

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 触发器,删除行

以下示例演示 function.json 文件中的 Azure Database for MySQL 输入绑定,以及 HTTP 请求触发的 Python 函数。 绑定使用 HTTP 请求的查询参数的输入执行存储过程。

必须在数据库上创建存储过程 DeleteProductsCost。 在此示例中,存储过程根据参数的值删除单个记录或所有记录。

DROP PROCEDURE IF EXISTS DeleteProductsCost;

Create Procedure DeleteProductsCost(cost INT)
BEGIN
  DELETE from Products where Products.cost = cost;
END

以下示例是function_app.py文件的示例 Python 代码:

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"
    )

属性

C# 库使用MySqlAttribute特性在函数上声明 MySQL 绑定。 该属性具有以下属性:

Attribute 属性 说明
CommandText 必需。 绑定执行的存储过程的 MySQL 查询命令或名称。
ConnectionStringSetting 必需。 应用设置的名称,该设置包含执行查询或存储过程的数据库的连接字符串。 该值不是实际的连接字符串,必须解析为环境变量名称。
CommandType 必需。 一个 CommandType 值,该值用于 Text 查询和 StoredProcedure 存储过程。
Parameters 可选。 在执行期间作为单个字符串传递给命令的零个或多个参数值。 必须遵循格式 @param1=param1,@param2=param2。 参数名称和参数值不能包含逗号(,)或等号(=)。

批注

Java 函数运行时库中,对 @MySQLInput 其值来自 Azure Database for MySQL 的参数使用注释。 此批注支持以下元素:

元素 说明
commandText 必需。 绑定执行的存储过程的 MySQL 查询命令或名称。
connectionStringSetting 必需。 应用设置的名称,该设置包含执行查询或存储过程的数据库的连接字符串。 该值不是实际的连接字符串,必须解析为环境变量名称。
commandType 必需。 一个 CommandType 值,该值用于 Text 查询和 StoredProcedure 存储过程。
name 必需。 函数绑定的唯一名称。
parameters 可选。 在执行期间作为单个字符串传递给命令的零个或多个参数值。 必须遵循格式 @param1=param1,@param2=param2。 参数名称和参数值不能包含逗号(,)或等号(=)。

配置

下表说明了可以在传递给options该方法的对象上input.generic()设置的属性:

properties 说明
commandText 必需。 绑定执行的存储过程的 MySQL 查询命令或名称。
connectionStringSetting 必需。 应用设置的名称,该设置包含执行查询或存储过程的数据库的连接字符串。 该值不是实际的连接字符串,必须解析为环境变量名称。 连接字符串值中的可选关键字可用于优化 MySQL 绑定连接
commandType 必需。 一个 CommandType 值,该值用于 Text 查询和 StoredProcedure 存储过程。
parameters 可选。 在执行期间作为单个字符串传递给命令的零个或多个参数值。 必须遵循格式 @param1=param1,@param2=param2。 参数名称和参数值不能包含逗号(,)或等号(=)。

配置

下表介绍了在 function.json 文件中设置的绑定配置属性:

properties 说明
type 必需。 必须设置为 mysql
direction 必需。 必须设置为 in
name 必需。 表示函数代码中的查询结果的变量的名称。
commandText 必需。 绑定执行的存储过程的 MySQL 查询命令或名称。
connectionStringSetting 必需。 应用设置的名称,该设置包含执行查询或存储过程的数据库的连接字符串。 该值不是实际的连接字符串,必须解析为环境变量名称。 连接字符串值中的可选关键字可用于优化 MySQL 绑定连接
commandType 必需。 一个 CommandType 值,该值用于 Text 查询和 StoredProcedure 存储过程。
parameters 可选。 在执行期间作为单个字符串传递给命令的零个或多个参数值。 必须遵循格式 @param1=param1,@param2=param2。 参数名称和参数值不能包含逗号(,)或等号(=)。

在本地开发时,需要将应用程序设置添加到 集合中的 Values中。

使用情况

该属性的构造函数采用 MySQL 命令文本、命令类型、参数和连接字符串设置的名称。 该命令可以是具有命令类型的 System.Data.CommandType.Text MySQL 查询,也可以是具有命令类型的 System.Data.CommandType.StoredProcedure存储过程名称。 连接字符串设置的名称对应于包含 Azure Database for MySQL 的连接字符串 的应用程序设置(local.settings.json 本地开发)。

如果在执行 Azure Database for MySQL 输入绑定时发生异常,函数代码将停止运行。 结果可能是错误代码,例如返回 500 错误代码的 HTTP 触发器。