Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
При выполнении функции входная привязка Azure SQL извлекает данные из базы данных и передает ее во входной параметр функции.
Сведения об установке и настройке см. в обзорной статье.
Внимание
В этой статье используются вкладки для поддержки нескольких версий модели программирования Node.js. Модель версии 4 общедоступна и предназначена для более гибкого и интуитивно понятного интерфейса для разработчиков JavaScript и TypeScript. Дополнительные сведения о том, как работает модель версии 4, см. в руководстве разработчика по Функции Azure Node.js. Дополнительные сведения о различиях между версиями 3 и 4 см. в руководстве по миграции.
Примеры
Вы можете создать функцию C# с помощью одного из следующих режимов C#:
- Изолированная рабочая модель: скомпилированная функция C#, которая выполняется в рабочем процессе, изолированном от среды выполнения. Изолированный рабочий процесс необходим для поддержки функций C#, работающих в долгосрочной поддержке (LTS) и версиях, отличных от LTS для .NET и .NET Framework.
- Модель в процессе: скомпилированная функция C#, которая выполняется в том же процессе, что и среда выполнения Функций Azure.
- Скрипт C#: используется в основном при создании функций C# в портал Azure.
Внимание
Поддержка будет завершена для модели в процессе 10 ноября 2026 г. Настоятельно рекомендуется перенести приложения в изолированную рабочую модель для полной поддержки.
Дополнительные примеры входной привязки Azure SQL доступны в репозитории GitHub.
Этот раздел содержит следующие примеры.
- Триггер HTTP, получение записи по идентификатору из строки запроса
- Триггер HTTP, получение нескольких записей из данных маршрута
- Триггер HTTP, удаление записей
Примеры относятся к классу ToDoItem и соответствующей таблице базы данных:
namespace AzureSQL.ToDo
{
public class ToDoItem
{
public Guid Id { get; set; }
public int? order { get; set; }
public string title { get; set; }
public string url { get; set; }
public bool? completed { get; set; }
}
}
CREATE TABLE dbo.ToDo (
[Id] UNIQUEIDENTIFIER PRIMARY KEY,
[order] INT NULL,
[title] NVARCHAR(200) NOT NULL,
[url] NVARCHAR(200) NOT NULL,
[completed] BIT NOT NULL
);
Триггер HTTP, получение записи по идентификатору из строки запроса
В следующем примере показана функция C#, которая получает один документ. Функция активируется HTTP-запросом , использующим строку запроса для указания идентификатора. Этот идентификатор используется для получения ToDoItem записи с указанным запросом.
Примечание.
Параметры строки запроса HTTP задаются с учетом регистра.
using System.Collections.Generic;
using System.Linq;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Azure.Functions.Worker.Extensions.Sql;
using Microsoft.Azure.Functions.Worker.Http;
namespace AzureSQLSamples
{
public static class GetToDoItem
{
[FunctionName("GetToDoItem")]
public static IActionResult Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "gettodoitem")]
HttpRequest req,
[SqlInput(commandText: "select [Id], [order], [title], [url], [completed] from dbo.ToDo where Id = @Id",
commandType: System.Data.CommandType.Text,
parameters: "@Id={Query.id}",
connectionStringSetting: "SqlConnectionString")]
IEnumerable<ToDoItem> toDoItem)
{
return new OkObjectResult(toDoItem.FirstOrDefault());
}
}
}
Триггер HTTP, получение нескольких записей из параметра маршрута
В следующем примере показана функция C#, которая извлекает документы, возвращаемые запросом. Функция активируется HTTP-запросом , использующим данные маршрута для указания значения параметра запроса. Этот параметр используется для фильтрации ToDoItem записей в указанном запросе.
using System.Collections.Generic;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Azure.Functions.Worker.Extensions.Sql;
using Microsoft.Azure.Functions.Worker.Http;
namespace AzureSQLSamples
{
public static class GetToDoItems
{
[FunctionName("GetToDoItems")]
public static IActionResult Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "gettodoitems/{priority}")]
HttpRequest req,
[SqlInput(commandText: "select [Id], [order], [title], [url], [completed] from dbo.ToDo where [Priority] > @Priority",
commandType: System.Data.CommandType.Text,
parameters: "@Priority={priority}",
connectionStringSetting: "SqlConnectionString")]
IEnumerable<ToDoItem> toDoItems)
{
return new OkObjectResult(toDoItems);
}
}
}
Триггер HTTP, удаление записей
В следующем примере показана функция C#, которая выполняет хранимую процедуру с входными данными из параметра запроса HTTP-запроса.
Хранимая процедура dbo.DeleteToDo должна быть создана в базе данных SQL. В этом примере хранимая процедура удаляет одну запись или все записи в зависимости от значения параметра.
CREATE PROCEDURE [dbo].[DeleteToDo]
@Id NVARCHAR(100)
AS
DECLARE @UID UNIQUEIDENTIFIER = TRY_CAST(@ID AS UNIQUEIDENTIFIER)
IF @UId IS NOT NULL AND @Id != ''
BEGIN
DELETE FROM dbo.ToDo WHERE Id = @UID
END
ELSE
BEGIN
DELETE FROM dbo.ToDo WHERE @ID = ''
END
SELECT [Id], [order], [title], [url], [completed] FROM dbo.ToDo
GO
namespace AzureSQL.ToDo
{
public static class DeleteToDo
{
// delete all items or a specific item from querystring
// returns remaining items
// uses input binding with a stored procedure DeleteToDo to delete items and return remaining items
[FunctionName("DeleteToDo")]
public static IActionResult Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "delete", Route = "DeleteFunction")] HttpRequest req,
ILogger log,
[SqlInput(commandText: "DeleteToDo", commandType: System.Data.CommandType.StoredProcedure,
parameters: "@Id={Query.id}", connectionStringSetting: "SqlConnectionString")]
IEnumerable<ToDoItem> toDoItems)
{
return new OkObjectResult(toDoItems);
}
}
}
Дополнительные примеры входной привязки Azure SQL доступны в репозитории GitHub.
Этот раздел содержит следующие примеры.
- Триггер HTTP, получение нескольких записей
- Триггер HTTP, получение записи по идентификатору из строки запроса
- Триггер HTTP, удаление записей
Примеры относятся к классу ToDoItem (в отдельном файле ToDoItem.java) и соответствующей таблице базы данных:
package com.function;
import java.util.UUID;
public class ToDoItem {
public UUID Id;
public int order;
public String title;
public String url;
public boolean completed;
public ToDoItem() {
}
public ToDoItem(UUID Id, int order, String title, String url, boolean completed) {
this.Id = Id;
this.order = order;
this.title = title;
this.url = url;
this.completed = completed;
}
}
CREATE TABLE dbo.ToDo (
[Id] UNIQUEIDENTIFIER PRIMARY KEY,
[order] INT NULL,
[title] NVARCHAR(200) NOT NULL,
[url] NVARCHAR(200) NOT NULL,
[completed] BIT NOT NULL
);
Триггер HTTP, получение нескольких записей
В следующем примере показана входная привязка SQL в функции Java, которая активируется HTTP-запросом . Он считывает из запроса и возвращает результаты в ответе HTTP.
package com.function;
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.sql.annotation.SQLInput;
import java.util.Optional;
public class GetToDoItems {
@FunctionName("GetToDoItems")
public HttpResponseMessage run(
@HttpTrigger(
name = "req",
methods = {HttpMethod.GET},
authLevel = AuthorizationLevel.ANONYMOUS)
HttpRequestMessage<Optional<String>> request,
@SQLInput(
name = "toDoItems",
commandText = "SELECT * FROM dbo.ToDo",
commandType = "Text",
connectionStringSetting = "SqlConnectionString")
ToDoItem[] toDoItems) {
return request.createResponseBuilder(HttpStatus.OK).header("Content-Type", "application/json").body(toDoItems).build();
}
}
Триггер HTTP, получение записи по идентификатору из строки запроса
В следующем примере показана входная привязка SQL в функции Java, которая активируется HTTP-запросом . Он считывает из запроса, который фильтруется по параметру из строки запроса, и возвращает строку в ответе HTTP.
public class GetToDoItem {
@FunctionName("GetToDoItem")
public HttpResponseMessage run(
@HttpTrigger(
name = "req",
methods = {HttpMethod.GET},
authLevel = AuthorizationLevel.ANONYMOUS)
HttpRequestMessage<Optional<String>> request,
@SQLInput(
name = "toDoItems",
commandText = "SELECT * FROM dbo.ToDo",
commandType = "Text",
parameters = "@Id={Query.id}",
connectionStringSetting = "SqlConnectionString")
ToDoItem[] toDoItems) {
ToDoItem toDoItem = toDoItems[0];
return request.createResponseBuilder(HttpStatus.OK).header("Content-Type", "application/json").body(toDoItem).build();
}
}
Триггер HTTP, удаление записей
В следующем примере показана входная привязка SQL в функции Java, которая активируется HTTP-запросом . Он выполняет хранимую процедуру с входными данными из параметра запроса HTTP-запроса.
Хранимая процедура dbo.DeleteToDo должна быть создана в базе данных. В этом примере хранимая процедура удаляет одну запись или все записи в зависимости от значения параметра.
CREATE PROCEDURE [dbo].[DeleteToDo]
@Id NVARCHAR(100)
AS
DECLARE @UID UNIQUEIDENTIFIER = TRY_CAST(@ID AS UNIQUEIDENTIFIER)
IF @UId IS NOT NULL AND @Id != ''
BEGIN
DELETE FROM dbo.ToDo WHERE Id = @UID
END
ELSE
BEGIN
DELETE FROM dbo.ToDo WHERE @ID = ''
END
SELECT [Id], [order], [title], [url], [completed] FROM dbo.ToDo
GO
public class DeleteToDo {
@FunctionName("DeleteToDo")
public HttpResponseMessage run(
@HttpTrigger(
name = "req",
methods = {HttpMethod.GET},
authLevel = AuthorizationLevel.ANONYMOUS)
HttpRequestMessage<Optional<String>> request,
@SQLInput(
name = "toDoItems",
commandText = "dbo.DeleteToDo",
commandType = "StoredProcedure",
parameters = "@Id={Query.id}",
connectionStringSetting = "SqlConnectionString")
ToDoItem[] toDoItems) {
return request.createResponseBuilder(HttpStatus.OK).header("Content-Type", "application/json").body(toDoItems).build();
}
}
Дополнительные примеры входной привязки Azure SQL доступны в репозитории GitHub.
Этот раздел содержит следующие примеры.
- Триггер HTTP, получение нескольких записей
- Триггер HTTP, получение записи по идентификатору из строки запроса
- Триггер HTTP, удаление записей
Примеры относятся к таблице базы данных:
CREATE TABLE dbo.ToDo (
[Id] UNIQUEIDENTIFIER PRIMARY KEY,
[order] INT NULL,
[title] NVARCHAR(200) NOT NULL,
[url] NVARCHAR(200) NOT NULL,
[completed] BIT NOT NULL
);
Триггер HTTP, получение нескольких записей
В следующем примере показана входная привязка SQL, активируется HTTP-запросом . Он считывает из запроса и возвращает результаты в ответе HTTP.
import { app, HttpRequest, HttpResponseInit, input, InvocationContext } from '@azure/functions';
const sqlInput = input.sql({
commandText: 'select [Id], [order], [title], [url], [completed] from dbo.ToDo',
commandType: 'Text',
connectionStringSetting: 'SqlConnectionString',
});
export async function httpTrigger1(request: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> {
context.log('HTTP trigger and SQL input binding function processed a request.');
const toDoItems = context.extraInputs.get(sqlInput);
return {
jsonBody: toDoItems,
};
}
app.http('httpTrigger1', {
methods: ['GET'],
authLevel: 'anonymous',
extraInputs: [sqlInput],
handler: httpTrigger1,
});
const { app, input } = require('@azure/functions');
const sqlInput = input.sql({
commandText: 'select [Id], [order], [title], [url], [completed] from dbo.ToDo',
commandType: 'Text',
connectionStringSetting: 'SqlConnectionString',
});
app.http('httpTrigger1', {
methods: ['GET'],
authLevel: 'anonymous',
extraInputs: [sqlInput],
handler: (request, context) => {
context.log('HTTP trigger and SQL input binding function processed a request.');
const toDoItems = context.extraInputs.get(sqlInput);
return {
jsonBody: toDoItems,
};
},
});
Триггер HTTP, получение записи по идентификатору из строки запроса
В следующем примере показана входная привязка SQL, активируется HTTP-запросом . Он считывает из запроса, который фильтруется по параметру из строки запроса, и возвращает строку в ответе HTTP.
import { app, HttpRequest, HttpResponseInit, input, InvocationContext } from '@azure/functions';
const sqlInput = input.sql({
commandText: 'select [Id], [order], [title], [url], [completed] from dbo.ToDo where Id = @Id',
commandType: 'Text',
parameters: '@Id={Query.id}',
connectionStringSetting: 'SqlConnectionString',
});
export async function httpTrigger1(request: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> {
context.log('HTTP trigger and SQL input binding function processed a request.');
const toDoItem = context.extraInputs.get(sqlInput);
return {
jsonBody: toDoItem,
};
}
app.http('httpTrigger1', {
methods: ['GET'],
authLevel: 'anonymous',
extraInputs: [sqlInput],
handler: httpTrigger1,
});
const { app, input } = require('@azure/functions');
const sqlInput = input.sql({
commandText: 'select [Id], [order], [title], [url], [completed] from dbo.ToDo where Id = @Id',
commandType: 'Text',
parameters: '@Id={Query.id}',
connectionStringSetting: 'SqlConnectionString',
});
app.http('httpTrigger1', {
methods: ['GET'],
authLevel: 'anonymous',
extraInputs: [sqlInput],
handler: (request, context) => {
context.log('HTTP trigger and SQL input binding function processed a request.');
const toDoItem = context.extraInputs.get(sqlInput);
return {
jsonBody: toDoItem,
};
},
});
Триггер HTTP, удаление записей
В следующем примере показана входная привязка SQL, активируется HTTP-запросом . Он выполняет хранимую процедуру с входными данными из параметра запроса HTTP-запроса.
Хранимая процедура dbo.DeleteToDo должна быть создана в базе данных. В этом примере хранимая процедура удаляет одну запись или все записи в зависимости от значения параметра.
CREATE PROCEDURE [dbo].[DeleteToDo]
@Id NVARCHAR(100)
AS
DECLARE @UID UNIQUEIDENTIFIER = TRY_CAST(@ID AS UNIQUEIDENTIFIER)
IF @UId IS NOT NULL AND @Id != ''
BEGIN
DELETE FROM dbo.ToDo WHERE Id = @UID
END
ELSE
BEGIN
DELETE FROM dbo.ToDo WHERE @ID = ''
END
SELECT [Id], [order], [title], [url], [completed] FROM dbo.ToDo
GO
import { app, HttpRequest, HttpResponseInit, input, InvocationContext } from '@azure/functions';
const sqlInput = input.sql({
commandText: 'DeleteToDo',
commandType: 'StoredProcedure',
parameters: '@Id={Query.id}',
connectionStringSetting: 'SqlConnectionString',
});
export async function httpTrigger1(request: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> {
context.log('HTTP trigger and SQL input binding function processed a request.');
const toDoItems = context.extraInputs.get(sqlInput);
return {
jsonBody: toDoItems,
};
}
app.http('httpTrigger1', {
methods: ['GET'],
authLevel: 'anonymous',
extraInputs: [sqlInput],
handler: httpTrigger1,
});
const { app, input } = require('@azure/functions');
const sqlInput = input.sql({
commandText: 'DeleteToDo',
commandType: 'StoredProcedure',
parameters: '@Id={Query.id}',
connectionStringSetting: 'SqlConnectionString',
});
app.http('httpTrigger1', {
methods: ['GET'],
authLevel: 'anonymous',
extraInputs: [sqlInput],
handler: (request, context) => {
context.log('HTTP trigger and SQL input binding function processed a request.');
const toDoItems = context.extraInputs.get(sqlInput);
return {
jsonBody: toDoItems,
};
},
});
Дополнительные примеры входной привязки Azure SQL доступны в репозитории GitHub.
Этот раздел содержит следующие примеры.
- Триггер HTTP, получение нескольких записей
- Триггер HTTP, получение записи по идентификатору из строки запроса
- Триггер HTTP, удаление записей
Примеры относятся к таблице базы данных:
CREATE TABLE dbo.ToDo (
[Id] UNIQUEIDENTIFIER PRIMARY KEY,
[order] INT NULL,
[title] NVARCHAR(200) NOT NULL,
[url] NVARCHAR(200) NOT NULL,
[completed] BIT NOT NULL
);
Триггер HTTP, получение нескольких записей
В следующем примере показана входная привязка SQL в файле function.json и функция PowerShell, активируется HTTP-запросом . Он считывает из запроса и возвращает результаты в ответе HTTP.
Ниже приведены данные привязки в файле function.json:
{
"authLevel": "anonymous",
"type": "httpTrigger",
"direction": "in",
"name": "req",
"methods": [
"get"
]
},
{
"type": "http",
"direction": "out",
"name": "res"
},
{
"name": "todoItems",
"type": "sql",
"direction": "in",
"commandText": "select [Id], [order], [title], [url], [completed] from dbo.ToDo",
"commandType": "Text",
"connectionStringSetting": "SqlConnectionString"
}
В разделе Конфигурация описываются эти свойства.
Ниже приведен пример кода PowerShell для функции в run.ps1 файле:
using namespace System.Net
param($Request, $todoItems)
Write-Host "PowerShell function with SQL Input Binding processed a request."
Push-OutputBinding -Name res -Value ([HttpResponseContext]@{
StatusCode = [System.Net.HttpStatusCode]::OK
Body = $todoItems
})
Триггер HTTP, получение записи по идентификатору из строки запроса
В следующем примере показана входная привязка SQL в функции PowerShell, которая активируется HTTP-запросом . Он считывает из запроса, который фильтруется по параметру из строки запроса, и возвращает строку в ответе HTTP.
Ниже приведены данные привязки в файле function.json:
{
"authLevel": "anonymous",
"type": "httpTrigger",
"direction": "in",
"name": "req",
"methods": [
"get"
]
},
{
"type": "http",
"direction": "out",
"name": "res"
},
{
"name": "todoItem",
"type": "sql",
"direction": "in",
"commandText": "select [Id], [order], [title], [url], [completed] from dbo.ToDo where Id = @Id",
"commandType": "Text",
"parameters": "@Id = {Query.id}",
"connectionStringSetting": "SqlConnectionString"
}
В разделе Конфигурация описываются эти свойства.
Ниже приведен пример кода PowerShell для функции в run.ps1 файле:
using namespace System.Net
param($Request, $todoItem)
Write-Host "PowerShell function with SQL Input Binding processed a request."
Push-OutputBinding -Name res -Value ([HttpResponseContext]@{
StatusCode = [System.Net.HttpStatusCode]::OK
Body = $todoItem
})
Триггер HTTP, удаление записей
В следующем примере показана входная привязка SQL в файле function.json и функция PowerShell, активируется HTTP-запросом . Он выполняет хранимую процедуру с входными данными из параметра запроса HTTP-запроса.
Хранимая процедура dbo.DeleteToDo должна быть создана в базе данных. В этом примере хранимая процедура удаляет одну запись или все записи в зависимости от значения параметра.
CREATE PROCEDURE [dbo].[DeleteToDo]
@Id NVARCHAR(100)
AS
DECLARE @UID UNIQUEIDENTIFIER = TRY_CAST(@ID AS UNIQUEIDENTIFIER)
IF @UId IS NOT NULL AND @Id != ''
BEGIN
DELETE FROM dbo.ToDo WHERE Id = @UID
END
ELSE
BEGIN
DELETE FROM dbo.ToDo WHERE @ID = ''
END
SELECT [Id], [order], [title], [url], [completed] FROM dbo.ToDo
GO
{
"authLevel": "anonymous",
"type": "httpTrigger",
"direction": "in",
"name": "req",
"methods": [
"get"
]
},
{
"type": "http",
"direction": "out",
"name": "res"
},
{
"name": "todoItems",
"type": "sql",
"direction": "in",
"commandText": "DeleteToDo",
"commandType": "StoredProcedure",
"parameters": "@Id = {Query.id}",
"connectionStringSetting": "SqlConnectionString"
}
В разделе Конфигурация описываются эти свойства.
Ниже приведен пример кода PowerShell для функции в run.ps1 файле:
using namespace System.Net
param($Request, $todoItems)
Write-Host "PowerShell function with SQL Input Binding processed a request."
Push-OutputBinding -Name res -Value ([HttpResponseContext]@{
StatusCode = [System.Net.HttpStatusCode]::OK
Body = $todoItems
})
Дополнительные примеры входной привязки Azure SQL доступны в репозитории GitHub.
Этот раздел содержит следующие примеры.
- Триггер HTTP, получение нескольких записей
- Триггер HTTP, получение записи по идентификатору из строки запроса
- Триггер HTTP, удаление записей
Примеры относятся к таблице базы данных:
CREATE TABLE dbo.ToDo (
[Id] UNIQUEIDENTIFIER PRIMARY KEY,
[order] INT NULL,
[title] NVARCHAR(200) NOT NULL,
[url] NVARCHAR(200) NOT NULL,
[completed] BIT NOT NULL
);
Триггер HTTP, получение нескольких записей
В следующем примере показана входная привязка SQL в файле function.json и функции Python, которая активируется HTTP-запросом . Он считывает из запроса и возвращает результаты в ответе HTTP.
Следующий код Python — это пример файла function_app.py:
import json
import logging
import azure.functions as func
app = func.FunctionApp()
@app.function_name(name="GetToDo")
@app.route(route="gettodo")
@app.sql_input(arg_name="todo",
command_text="select [Id], [order], [title], [url], [completed] from dbo.ToDo",
command_type="Text",
connection_string_setting="SqlConnectionString")
def get_todo(req: func.HttpRequest, todo: func.SqlRowList) -> func.HttpResponse:
rows = list(map(lambda r: json.loads(r.to_json()), todo))
return func.HttpResponse(
json.dumps(rows),
status_code=200,
mimetype="application/json"
)
Триггер HTTP, получение записи по идентификатору из строки запроса
В следующем примере показана входная привязка SQL в функции Python, которая активируется HTTP-запросом . Он считывает из запроса, который фильтруется по параметру из строки запроса, и возвращает строку в ответе HTTP.
Следующий код Python — это пример файла function_app.py:
import json
import logging
import azure.functions as func
from azure.functions.decorators.core import DataType
app = func.FunctionApp()
@app.function_name(name="GetToDo")
@app.route(route="gettodo/{id}")
@app.sql_input(arg_name="todo",
command_text="select [Id], [order], [title], [url], [completed] from dbo.ToDo where Id = @Id",
command_type="Text",
parameters="@Id={id}",
connection_string_setting="SqlConnectionString")
def get_todo(req: func.HttpRequest, todo: func.SqlRowList) -> func.HttpResponse:
rows = list(map(lambda r: json.loads(r.to_json()), todo))
return func.HttpResponse(
json.dumps(rows),
status_code=200,
mimetype="application/json"
)
Триггер HTTP, удаление записей
В следующем примере показана входная привязка SQL в файле function.json и функции Python, которая активируется HTTP-запросом . Он выполняет хранимую процедуру с входными данными из параметра запроса HTTP-запроса.
Хранимая процедура dbo.DeleteToDo должна быть создана в базе данных. В этом примере хранимая процедура удаляет одну запись или все записи в зависимости от значения параметра.
CREATE PROCEDURE [dbo].[DeleteToDo]
@Id NVARCHAR(100)
AS
DECLARE @UID UNIQUEIDENTIFIER = TRY_CAST(@ID AS UNIQUEIDENTIFIER)
IF @UId IS NOT NULL AND @Id != ''
BEGIN
DELETE FROM dbo.ToDo WHERE Id = @UID
END
ELSE
BEGIN
DELETE FROM dbo.ToDo WHERE @ID = ''
END
SELECT [Id], [order], [title], [url], [completed] FROM dbo.ToDo
GO
Следующий код Python — это пример файла function_app.py:
import json
import logging
import azure.functions as func
from azure.functions.decorators.core import DataType
app = func.FunctionApp()
@app.function_name(name="DeleteToDo")
@app.route(route="deletetodo/{id}")
@app.sql_input(arg_name="todo",
command_text="DeleteToDo",
command_type="StoredProcedure",
parameters="@Id={id}",
connection_string_setting="SqlConnectionString")
def get_todo(req: func.HttpRequest, todo: func.SqlRowList) -> func.HttpResponse:
rows = list(map(lambda r: json.loads(r.to_json()), todo))
return func.HttpResponse(
json.dumps(rows),
status_code=200,
mimetype="application/json"
)
Атрибуты
Библиотека C# использует атрибут SqlAttribute для объявления привязок SQL в функции, которая имеет следующие свойства:
| Свойство атрибута | Описание |
|---|---|
| CommandText | Обязательный. Команда запроса Transact-SQL или имя хранимой процедуры, выполняемой привязкой. |
| ConnectionStringSetting | Обязательный. Имя параметра приложения, содержащего строку подключения для базы данных, с которой выполняется запрос или хранимая процедура. Это значение не является фактической строкой подключения и вместо этого должно разрешиться в имя переменной среды. |
| CommandType | Обязательный. Значение CommandType, которое является текстом для запроса и StoredProcedure для хранимой процедуры. |
| Параметры | Необязательно. Ноль или больше значений параметров, передаваемых команде во время выполнения в виде одной строки. Должно соответствовать формату @param1=param1,@param2=param2. Имя параметра и значение параметра не могут содержать запятую (,) или знак равенства (=). |
Заметки
В библиотеке среды выполнения функций Java используйте заметку @SQLInput (com.microsoft.azure.functions.sql.annotation.SQLInput) для параметров, значение которых будет поступать из SQL Azure. Эта заметка поддерживает следующие элементы:
| Элемент | Описание |
|---|---|
| commandText | Обязательный. Команда запроса Transact-SQL или имя хранимой процедуры, выполняемой привязкой. |
| connectionStringSetting | Обязательный. Имя параметра приложения, содержащего строку подключения для базы данных, с которой выполняется запрос или хранимая процедура. Это значение не является фактической строкой подключения и вместо этого должно разрешиться в имя переменной среды. |
| commandType | Обязательный. Значение CommandType , которое имеет значение Text для запроса и StoredProcedure для хранимой процедуры. |
| имя | Обязательный. Уникальное имя привязки функции. |
| Параметры | Необязательно. Ноль или больше значений параметров, передаваемых команде во время выполнения в виде одной строки. Должно соответствовать формату @param1=param1,@param2=param2. Имя параметра и значение параметра не могут содержать запятую (,) или знак равенства (=). |
Настройка
В следующей таблице описываются свойства, которые можно задать для options объекта, переданного методу input.sql() .
| Свойство | Описание |
|---|---|
| commandText | Обязательный. Команда запроса Transact-SQL или имя хранимой процедуры, выполняемой привязкой. |
| connectionStringSetting | Обязательный. Имя параметра приложения, содержащего строку подключения для базы данных, с которой выполняется запрос или хранимая процедура. Это значение не является фактической строкой подключения и вместо этого должно разрешиться в имя переменной среды. Необязательные ключевые слова в значении строки подключения доступны для уточнения возможности подключения привязок SQL. |
| commandType | Обязательный. Значение CommandType, которое является текстом для запроса и StoredProcedure для хранимой процедуры. |
| Параметры | Необязательно. Ноль или больше значений параметров, передаваемых команде во время выполнения в виде одной строки. Должно соответствовать формату @param1=param1,@param2=param2. Имя параметра и значение параметра не могут содержать запятую (,) или знак равенства (=). |
Настройка
В следующей таблице описываются свойства конфигурации привязки, которые задаются в файле function.json.
| Свойство в function.json | Описание |
|---|---|
| тип | Обязательный. Должен иметь значениеsql. |
| направление | Обязательный. Должен иметь значениеin. |
| имя | Обязательный. Имя переменной, представляющей результаты запроса в коде функции. |
| commandText | Обязательный. Команда запроса Transact-SQL или имя хранимой процедуры, выполняемой привязкой. |
| connectionStringSetting | Обязательный. Имя параметра приложения, содержащего строку подключения для базы данных, с которой выполняется запрос или хранимая процедура. Это значение не является фактической строкой подключения и вместо этого должно разрешиться в имя переменной среды. Необязательные ключевые слова в значении строки подключения доступны для уточнения возможности подключения привязок SQL. |
| commandType | Обязательный. Значение CommandType, которое является текстом для запроса и StoredProcedure для хранимой процедуры. |
| Параметры | Необязательно. Ноль или больше значений параметров, передаваемых команде во время выполнения в виде одной строки. Должно соответствовать формату @param1=param1,@param2=param2. Имя параметра и значение параметра не могут содержать запятую (,) или знак равенства (=). |
Если разработка ведется на локальном компьютере, добавьте параметры приложения в файл local.settings.json в коллекции Values.
Использование
Определение привязки включает текст команды SQL, тип команды, параметры и имя параметра строка подключения. Команда может быть запросом Transact-SQL (T-SQL) с типом команды System.Data.CommandType.Text или именем хранимой процедуры с типом команды System.Data.CommandType.StoredProcedure. Имя параметра строки подключения соответствует параметру приложения (для local.settings.json локальной разработки), который содержит строку подключения к экземплярам Azure SQL или SQL Server.
Внимание
Для оптимальной безопасности следует использовать идентификатор Microsoft Entra с управляемыми удостоверениями для подключений между функциями и База данных SQL Azure. Управляемые удостоверения обеспечивают безопасность приложения, устраняя секреты из развертываний приложений, например учетные данные в строка подключения, именах серверов и используемых портах. Вы можете узнать, как использовать управляемые удостоверения в этом руководстве, подключить приложение-функцию к SQL Azure с управляемыми удостоверениями и привязками SQL.
Запросы, выполняемые входной привязкой, параметризуются в Microsoft.Data.SqlClient, чтобы снизить риск внедрения SQL из значений параметров, переданных в привязку.
Если исключение возникает при выполнении входной привязки SQL, код функции не выполняется. Это может привести к возврату кода ошибки, например триггера HTTP, возвращающего код ошибки 500.