Azure Functions の Azure SQL 入力バインド
関数が実行されると、Azure SQL 入力バインドによりデータベースからデータが取得され、関数の入力パラメーターに渡されます。
セットアップと構成の詳細については、概要に関するページをご覧ください。
例
A C# 関数は、次の C# モードのいずれかを使用して作成できます。
- インプロセス クラス ライブラリ: Functions ランタイムと同じプロセスで実行されるコンパイル済みの C# 関数。
- 分離ワーカー プロセス クラス ライブラリ: ランタイムから分離されたワーカー プロセスで実行されるコンパイル済みの C# 関数。 分離ワーカー プロセスは、LTS および 非 LTS バージョンの .NET および .NET Framework で実行されている C# 関数をサポートするために必要です。
- C# スクリプト: Azure portal で C# 関数を作成するときに主に使用されます。
Azure SQL 入力バインドのその他のサンプルは、GitHub リポジトリで入手できます。
このセクションには、次の例が含まれています。
次の例では 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 トリガー、クエリ文字列からの ID による行の取得
次の例は、単一のレコードを取得する C# 関数を示しています。 この関数は、クエリ文字列を使用して ID を指定する HTTP 要求によってトリガーされます。 その ID は、指定されたクエリを使用して ToDoItem
レコードを取得するために使用されます。
Note
HTTP クエリ文字列パラメーターは大文字と小文字が区別されます。
using System.Collections.Generic;
using System.Linq;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
namespace AzureSQLSamples
{
public static class GetToDoItem
{
[FunctionName("GetToDoItem")]
public static IActionResult Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "gettodoitem")]
HttpRequest req,
[Sql(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.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
namespace AzureSQLSamples
{
public static class GetToDoItems
{
[FunctionName("GetToDoItems")]
public static IActionResult Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "gettodoitems/{priority}")]
HttpRequest req,
[Sql(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 トリガー、行の削除
次の例は、HTTP 要求クエリ パラメーターからの入力を使用してストアド プロシージャを実行する C# 関数を示しています。
ストアド プロシージャ dbo.DeleteToDo
は、SQL データベースに作成する必要があります。 この例では、ストアド プロシージャは、パラメーターの値に応じて 1 つのレコードまたはすべてのレコードを削除します。
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
using System;
using System.Collections.Generic;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
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,
[Sql(commandText: "DeleteToDo", commandType: System.Data.CommandType.StoredProcedure,
parameters: "@Id={Query.id}", connectionStringSetting: "SqlConnectionString")]
IEnumerable<ToDoItem> toDoItems)
{
return new OkObjectResult(toDoItems);
}
}
}
Azure SQL 入力バインドのその他のサンプルは、GitHub リポジトリで入手できます。
このセクションには、次の例が含まれています。
次の例では 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 トリガー、複数の行の取得
次に示すのは、クエリから読み取って HTTP 応答で結果を返す、Java 関数での SQL 入力バインドの例です。
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 トリガー、クエリ文字列からの ID による行の取得
次に示すのは、クエリ文字列のパラメーターでフィルター処理されたクエリから読み取って、HTTP 応答で行を返す、Java 関数での SQL 入力バインドの例です。
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 トリガー、行の削除
次に示すのは、HTTP 要求クエリ パラメーターからの入力を使ってストアド プロシージャを実行する、Java 関数での SQL 入力バインドの例です。
ストアド プロシージャ dbo.DeleteToDo
は、データベースに作成する必要があります。 この例では、ストアド プロシージャは、パラメーターの値に応じて 1 つのレコードまたはすべてのレコードを削除します。
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 リポジトリで入手できます。
このセクションには、次の例が含まれています。
この例では、次のデータベース テーブルを参照します。
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 トリガー、複数の行の取得
次の例は、function.json ファイル内の SQL 入力バインドと、クエリから読み取って結果を HTTP 応答で返す JavaScript 関数を示しています。
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"
}
これらのプロパティについては、「構成」セクションを参照してください。
JavaScript コードの例を次に示します。
module.exports = async function (context, req, todoItems) {
context.log('JavaScript HTTP trigger and SQL input binding function processed a request.');
context.res = {
// status: 200, /* Defaults to 200 */
mimetype: "application/json",
body: todoItems
};
}
HTTP トリガー、クエリ文字列からの ID による行の取得
次の例は、クエリ文字列のパラメーターによってフィルター処理されたクエリから読み取り、HTTP 応答で行を返す JavaScript 関数の SQL 入力バインドを示しています。
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"
}
これらのプロパティについては、「構成」セクションを参照してください。
JavaScript コードの例を次に示します。
module.exports = async function (context, req, todoItem) {
context.log('JavaScript HTTP trigger and SQL input binding function processed a request.');
context.res = {
// status: 200, /* Defaults to 200 */
mimetype: "application/json",
body: todoItem
};
}
HTTP トリガー、行の削除
次の例は、function.json ファイル内の SQL 入力バインドと、HTTP 要求クエリ パラメーターからの入力を使用してストアド プロシージャを実行する JavaScript 関数を示しています。
ストアド プロシージャ dbo.DeleteToDo
は、データベースに作成する必要があります。 この例では、ストアド プロシージャは、パラメーターの値に応じて 1 つのレコードまたはすべてのレコードを削除します。
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"
}
これらのプロパティについては、「構成」セクションを参照してください。
JavaScript コードの例を次に示します。
module.exports = async function (context, req, todoItems) {
context.log('JavaScript HTTP trigger and SQL input binding function processed a request.');
context.res = {
// status: 200, /* Defaults to 200 */
mimetype: "application/json",
body: todoItems
};
}
Azure SQL 入力バインドのその他のサンプルは、GitHub リポジトリで入手できます。
このセクションには、次の例が含まれています。
この例では、次のデータベース テーブルを参照します。
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 トリガー、複数の行の取得
次に示すのは、クエリから読み取って HTTP 応答で結果を返す、function.json ファイルと PowerShell 関数での SQL 入力バインドの例です。
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"
}
これらのプロパティについては、「構成」セクションを参照してください。
run.ps1
ファイル内の関数の PowerShell コードの例を次に示します。
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 トリガー、クエリ文字列からの ID による行の取得
次に示すのは、クエリ文字列のパラメーターでフィルター処理されたクエリから読み取って、HTTP 応答で行を返す、PowerShell 関数での SQL 入力バインドの例です。
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"
}
これらのプロパティについては、「構成」セクションを参照してください。
run.ps1
ファイル内の関数の PowerShell コードの例を次に示します。
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 トリガー、行の削除
次に示すのは、HTTP 要求クエリ パラメーターからの入力を使ってストアド プロシージャを実行する、function.json ファイルと PowerShell 関数での SQL 入力バインドの例です。
ストアド プロシージャ dbo.DeleteToDo
は、データベースに作成する必要があります。 この例では、ストアド プロシージャは、パラメーターの値に応じて 1 つのレコードまたはすべてのレコードを削除します。
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"
}
これらのプロパティについては、「構成」セクションを参照してください。
run.ps1
ファイル内の関数の PowerShell コードの例を次に示します。
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 リポジトリで入手できます。
このセクションには、次の例が含まれています。
この例では、次のデータベース テーブルを参照します。
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 トリガー、複数の行の取得
次の例は、function.json ファイル内の SQL 入力バインドと、クエリから読み取って結果を HTTP 応答で返す Python 関数を示しています。
function.json ファイルのバインド データを次に示します。
{
"authLevel": "anonymous",
"type": "httpTrigger",
"direction": "in",
"name": "req",
"methods": [
"get"
]
},
{
"type": "http",
"direction": "out",
"name": "$return"
},
{
"name": "todoItems",
"type": "sql",
"direction": "in",
"commandText": "select [Id], [order], [title], [url], [completed] from dbo.ToDo",
"commandType": "Text",
"connectionStringSetting": "SqlConnectionString"
}
これらのプロパティについては、「構成」セクションを参照してください。
Python コードの例を次に示します。
import azure.functions as func
import json
def main(req: func.HttpRequest, todoItems: func.SqlRowList) -> func.HttpResponse:
rows = list(map(lambda r: json.loads(r.to_json()), todoItems))
return func.HttpResponse(
json.dumps(rows),
status_code=200,
mimetype="application/json"
)
HTTP トリガー、クエリ文字列からの ID による行の取得
次の例は、クエリ文字列のパラメーターでフィルター処理されたクエリから読み取り、HTTP 応答で行を返す Python 関数の SQL 入力バインドを示しています。
function.json ファイルのバインド データを次に示します。
{
"authLevel": "anonymous",
"type": "httpTrigger",
"direction": "in",
"name": "req",
"methods": [
"get"
]
},
{
"type": "http",
"direction": "out",
"name": "$return"
},
{
"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"
}
これらのプロパティについては、「構成」セクションを参照してください。
Python コードの例を次に示します。
import azure.functions as func
import json
def main(req: func.HttpRequest, todoItem: func.SqlRowList) -> func.HttpResponse:
rows = list(map(lambda r: json.loads(r.to_json()), todoItem))
return func.HttpResponse(
json.dumps(rows),
status_code=200,
mimetype="application/json"
)
HTTP トリガー、行の削除
次の例は、function.json ファイル内の SQL 入力バインドと、HTTP 要求クエリ パラメーターからの入力を使用してストアド プロシージャを実行する Python 関数を示しています。
ストアド プロシージャ dbo.DeleteToDo
は、データベースに作成する必要があります。 この例では、ストアド プロシージャは、パラメーターの値に応じて 1 つのレコードまたはすべてのレコードを削除します。
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": "$return"
},
{
"name": "todoItems",
"type": "sql",
"direction": "in",
"commandText": "DeleteToDo",
"commandType": "StoredProcedure",
"parameters": "@Id = {Query.id}",
"connectionStringSetting": "SqlConnectionString"
}
これらのプロパティについては、「構成」セクションを参照してください。
Python コードの例を次に示します。
import azure.functions as func
import json
def main(req: func.HttpRequest, todoItems: func.SqlRowList) -> func.HttpResponse:
rows = list(map(lambda r: json.loads(r.to_json()), todoItems))
return func.HttpResponse(
json.dumps(rows),
status_code=200,
mimetype="application/json"
)
属性
C# ライブラリでは SqlAttribute 属性を使用して、次のプロパティを持つ関数で SQL バインディングを宣言します。
属性のプロパティ | 説明 |
---|---|
CommandText | 必須。 バインドによって実行される Transact-SQL クエリ コマンドまたはストアド プロシージャの名前。 |
ConnectionStringSetting | 必須。 クエリまたはストアド プロシージャの実行対象となるデータベースの接続文字列を含むアプリ設定の名前。 この値は実際の接続文字列ではなく、代わりに環境変数名に解決される必要があります。 |
CommandType | 必須。 CommandType 値。これは、クエリの場合はテキストで、ストアド プロシージャの場合は StoredProcedure です。 |
パラメーター | 省略可能。 実行時に 1 つの文字列としてコマンドに渡される 0 個以上のパラメーター値。 @param1=param1,@param2=param2 という形式に従う必要があります。 パラメーター名とパラメーター値のどちらにも、コンマ (, ) または等号 (= ) を含めることはできません。 |
注釈
Java 関数ランタイム ライブラリで、その値が Azure SQL に由来するパラメーター上で @SQLInput
注釈 (com.microsoft.azure.functions.sql.annotation.SQLInput
) を使用します。 この注釈は、次の要素をサポートします。
要素 | 説明 |
---|---|
commandText | 必須。 バインドによって実行される Transact-SQL クエリ コマンドまたはストアド プロシージャの名前。 |
connectionStringSetting | 必須。 クエリまたはストアド プロシージャの実行対象となるデータベースの接続文字列を含むアプリ設定の名前。 この値は実際の接続文字列ではなく、代わりに環境変数名に解決される必要があります。 |
commandType | 必須。 CommandType 値。これは、クエリの場合は "Text" で、ストアド プロシージャの場合は "StoredProcedure" です。 |
name | 必須。 関数バインドの一意の名前。 |
parameters | 省略可能。 実行時に 1 つの文字列としてコマンドに渡される 0 個以上のパラメーター値。 @param1=param1,@param2=param2 という形式に従う必要があります。 パラメーター名とパラメーター値のどちらにも、コンマ (, ) または等号 (= ) を含めることはできません。 |
構成
次の表は、function.json ファイルで設定したバインド構成のプロパティを説明しています。
function.json のプロパティ | 説明 |
---|---|
type | 必須。 sql に設定する必要があります。 |
direction | 必須。 in に設定する必要があります。 |
name | 必須。 関数コード内のクエリ結果を表す変数の名前。 |
commandText | 必須。 バインドによって実行される Transact-SQL クエリ コマンドまたはストアド プロシージャの名前。 |
connectionStringSetting | 必須。 クエリまたはストアド プロシージャの実行対象となるデータベースの接続文字列を含むアプリ設定の名前。 この値は実際の接続文字列ではなく、代わりに環境変数名に解決される必要があります。 接続文字列値の省略可能なキーワードは、SQL バインドの接続を調整するために使用できます。 |
commandType | 必須。 CommandType 値。これは、クエリの場合はテキストで、ストアド プロシージャの場合は StoredProcedure です。 |
parameters | 省略可能。 実行時に 1 つの文字列としてコマンドに渡される 0 個以上のパラメーター値。 @param1=param1,@param2=param2 という形式に従う必要があります。 パラメーター名とパラメーター値のどちらにも、コンマ (, ) または等号 (= ) を含めることはできません。 |
ローカルで開発する場合は、 コレクション内の local.settings.json ファイルにアプリケーション設定を追加します。
使用
この属性のコンストラクターは、SQL コマンド テキスト、コマンドの種類、パラメーター、接続文字列設定名を受け取ります。 コマンドは、コマンドの種類 System.Data.CommandType.Text
を指定した Transact-SQL (T-SQL) クエリ、またはコマンドの種類 System.Data.CommandType.StoredProcedure
を指定したストアド プロシージャ名にすることができます。 接続文字列設定名は、Azure SQL または SQL Server インスタンスへの接続の接続文字列が含まれるアプリケーション設定 (ローカル開発の場合は local.settings.json
の) に合致します。
入力バインドによって実行されるクエリは、Microsoft.Data.SqlClient でパラメーター化され、バインドに渡されるパラメーター値からの SQL インジェクションのリスクを軽減します。
SQL 入力バインディングの実行時に例外が発生した場合、関数コードは実行されません。 これにより、HTTP トリガーが 500 エラー コードを返すなど、エラー コードが返される可能性があります。