Implementer variabler i forespørgsler

Fuldført

Vi kan implementere mange almindelige forespørgsler på tværs af produkter på SDK-siden og kan tilføje filtre for at forhindre, at forespørgslerne eksploderer i resultatstørrelse og kompleksitet. Ved hjælp af de tilgængelige klasser og metoder i SDK'et kan vi tilføje forespørgselsparametre for hurtigt at justere værdierne i et WHERE filter for en SQL-forespørgsel.

Lad os se på et eksempel på en SQL-forespørgsel, der bruger et JOIN og et WHERE filter:

SELECT 
    p.name,
    t.name AS tag
FROM 
    products p
JOIN
    t IN p.tags
WHERE
    p.price > 500

I C#opretter vi typisk en forespørgselsdefinition ved hjælp af følgende syntaks med værdien 500 hard-coded i en strengværdi:

string sql = "SELECT p.name, t.name AS tag FROM products p JOIN t IN p.tags WHERE p.price > 500"
QueryDefinition query = new (sql);

Men ved hjælp af . WithParameter(streng, streng) flydende metode kan du føje parametre til forespørgslen, hvilket gør det nemmere at konfigurere parametre i forespørgslen:

string sql = "SELECT p.name, t.name AS tag FROM products p JOIN t IN p.tags WHERE p.price > @lower"
QueryDefinition query = new (sql)
    .WithParameter("@lower", 500);

Du kan endda bruge flere parametre i mere komplekse forespørgsler:

string sql = "SELECT p.name, t.name AS tag FROM products p JOIN t IN p.tags WHERE p.price >= @lower AND p.price <= @upper"
QueryDefinition query = new (sql)
    .WithParameter("@lower", 500)
    .WithParameter("@upper", 1000);

I Python vil vi typisk oprette en forespørgselsdefinition ved hjælp af følgende syntaks med værdien 500 hårdkodet i en strengværdi:

query_text = "SELECT p.name, t AS tag FROM products p JOIN t IN p.tags WHERE p.price > 500"
query = {"query": query_text}

Men ved at bruge parametre til forespørgslen dynamisk kan vi justere filterværdierne på kørselstidspunktet WHERE . Sådan tilføjer du en parameter ved hjælp af Python SDK:

query_text = "SELECT p.name, t AS tag FROM products p JOIN t IN p.tags WHERE p.price > @lower"

query = {
    "query": query_text,
    "parameters": [
        {"name": "@lower", "value": 500}
    ]
}

Du kan endda bruge flere parametre i mere komplekse forespørgsler:

query_text = (
    "SELECT p.name, t AS tag "
    "FROM products p JOIN t IN p.tags "
    "WHERE p.price >= @lower AND p.price <= @upper"
)

query = {
    "query": query_text,
    "parameters": [
        {"name": "@lower", "value": 500},
        {"name": "@upper", "value": 1000}
    ]
}

I JavaScript opretter vi typisk en forespørgselsdefinition ved hjælp af følgende syntaks med værdien 500 hårdkodet i en strengværdi:

const sql = "SELECT p.name, t.name AS tag FROM products p JOIN t IN p.tags WHERE p.price > 500";

Men ved at bruge parametre til forespørgslen dynamisk kan vi justere filterværdierne på kørselstidspunktet WHERE . Sådan tilføjer du en parameter ved hjælp af JavaScript SDK:

const sql = "SELECT p.name, t.name AS tag FROM products p JOIN t IN p.tags WHERE p.price > @lower";

const querySpec = {
    query: sql,
    parameters: [
        { name: "@lower", value: 500 }
    ]
};

Du kan endda bruge flere parametre i mere komplekse forespørgsler:

const sql = "SELECT p.name, t.name AS tag FROM products p JOIN t IN p.tags WHERE p.price >= @lower AND p.price <= @upper";

const querySpec = {
    query: sql,
    parameters: [
        { name: "@lower", value: 500 },
        { name: "@upper", value: 1000 }
    ]
};

Fordele ved parameteriserede forespørgsler

  • Forbedret sikkerhed: Hjælper med at forhindre SQL-injektionsangreb.
  • Fleksibilitet: Giver dig mulighed for at ændre forespørgselsfiltre dynamisk uden at ændre SQL-forespørgselsstrukturen.
  • Genbrug af kode: Gør det nemmere at genbruge forespørgselsdefinitioner på tværs af flere forespørgsler med forskellige parameterværdier.