Paraméteres lekérdezések futtatása

A paraméteres lekérdezések lehetővé teszik a helyőrzők SQL-ben való megőrzését és az értékek futásidőben történő megadását. A PostgreSQL-bővítmény ezeket az értékeket lekérdezési paraméterekként köti össze; nem illeszt be értékeket az SQL-szövegbe.

Ezt a lapot akkor használja, ha olyan eszközökből vagy alkalmazáskódból kimásolt SQL-kódot szeretne futtatni, amelyekben például :name, $1 vagy ? helyőrzőket használnak.

Támogatott helyőrző szintaxisok

A lekérdezésszerkesztő a sztringeken, megjegyzéseken, típuskényszerítéseken, tömbszeleteken, dollárjelekkel határolt blokkokon és a PostgreSQL JSON-operátorain kívül észleli ezeket a helyőrzőstílusokat.

Névvel ellátott helyőrzők

select id, email
from users
where id = :user_id;

A névvel ellátott helyőrzők megkülönböztetik a kis- és nagybetűket. Az ugyanazon név ismétlődő előfordulásai egyazon rácssorban jelennek meg.

PostgreSQL pozicionális helyőrzők

select id, email
from users
where id = $1;

$N A helyőrzők pozicionálisak az őket tartalmazó utasításon belül.

Qmark pozicionális helyőrzők

select id, email
from users
where active = ?;

? A helyőrzők balról jobbra sorrendben működnek. A ? bármely értékpozícióban paraméterként működik, beleértve az összehasonlító operátorok után (>=, <=, <>), a CASE ágakban és a LIMIT/OFFSET esetében. A PostgreSQL JSONB operátorai ??|és ?& a JSON-útvonal operátorai @? operátorként, nem paraméterekként vannak felismerve.

Important

Utasításonként egy helyőrző stílust használjon. A végrehajtás előtt elutasításra kerül az az utasítás, amely :name-val$N vagy $N-val? keveredik.

A Paraméterek lap megnyitása és használata

  1. Nyisson meg vagy hozzon létre egy .sql fájlt, és csatlakoztassa egy adatbázishoz.
  2. Futtassa a Lekérdezés végrehajtása (PostgreSQL), az Aktuális utasítás végrehajtása (PostgreSQL) parancsot, vagy futtasson egy kijelölt SQL-tartományt.
  3. Ha az SQL helyőrzőket tartalmaz, a Paraméterek lap az alsó panelen nyílik meg.
  4. Adjon meg egy értéket minden sorhoz, válasszon egy típust, ha szükséges, és válassza a Lekérdezés futtatása lehetőséget.
  5. Az első futtatás után szerkessze az értékeket, és a lekérdezés ismétléséhez válassza a Futtatás lehetőséget .

A lapfül minden egyes egyedi, névvel ellátott helyőrzőhöz egy sort, valamint minden pozicionális helyőrzőhöz egy sort jelenít meg. Minden sor tartalmazza a helyőrző nevét vagy indexét, egy értékbemenetet, egy NULL jelölőnégyzetet, egy típus legördülő listát és a sorműveleteket, ha elérhető.

Több utasítást tartalmazó parancsfájlok

Megjegyzés (2026. május): A cikk korábbi verziói helytelenül írták le a pozícióindexeket utasításfüggetlenként. A viselkedés nem változott; csak a dokumentáció javítása történik.

A pozícióparaméterek ($N, ?) egyetlen értéktömböt osztanak meg a végrehajtott szkriptben. $1 (vagy az első ?) bármely utasításban mindig ugyanazt az értéket veszi fel, mint $1 bármely más utasításban. Ha ugyanazt a pozícióindexet használja az utasítások között, az nem ad nekik független értékeket. Ha ugyanarra az indexre különböző értékekre van szüksége különböző utasításokban, használjon elnevezett paramétereket (:name) helyette.

Ha egy megosztott, névvel ellátott érték nem kompatibilis az azt használó egyik utasítással, a PostgreSQL hibát jelez, a rács pedig megőrzi a megadott értékeket, így módosíthatja őket, majd újra futtathatja a műveletet.

NULL értékek

Az SQL NULL kötéséhez használja a NULL jelölőnégyzetet. Ha be van jelölve, a program figyelmen kívül hagyja az értékmezőt az adott sorhoz.

Ha beírja a literális szöveget NULL , miközben a NULL jelölőnégyzet ki van kapcsolva, a rács figyelmezteti, hogy az érték szövegként NULLkötődik, nem SQL-hez NULL.

Paramétertípusok kiválasztása

A típus legördülő listája alapértelmezés szerint a következő, amely lehetővé teszi, hogy autoa PostgreSQL a paraméter típusát következtethesse. Válasszon egy típust, ha ügyféloldali érvényesítést vagy világosabb kötést szeretne:

  • text
  • integer
  • bigint
  • numeric
  • boolean
  • date
  • timestamp
  • timestamptz
  • uuid
  • json
  • jsonb

A validálás nem szigorú. A figyelmeztetés nem blokkolja a beküldést; A PostgreSQL marad a végleges érvényesítő a végrehajtáskor.

Lekérdezésterv létrehozása paraméterekkel

Ha helyőrzőket tartalmazó SQL-lekérdezéstervet vizualizál, a Paraméterek lap a sorok visszaadása helyett a lekérdezésterv-vizualizációt vezérli. A futtatás gomb felolvassa a Lekérdezésterv vizualizációja parancsot, és az első futtatás után újra felolvassa a Vizualizációt. Adja meg az értékeket, és válassza ki a EXPLAIN futtatásához és megnyitásához szolgáló gombot. Ez az elérési út nem ad vissza lekérdezési eredményeket.

Használja a „Figyelmen kívül hagyás” lehetőséget

Használja a Kihagyás lehetőséget, ha a táblázat olyan tokent jelenít meg, amelynek az SQL-ben kell maradnia, például egy érvényes PostgreSQL-operátort. Az „Ignore” csak akkor van engedélyezve, ha a token hozzárendelés nélkül is érvényes SQL marad.

SQL szerkesztése és újrafuttatása

A Paraméterek lap megnyitásakor szerkesztheti az SQL-t, és újra kiválaszthatja a Futtatás lehetőséget. A bővítmény újra kinyeri a helyőrzőket, és összehasonlítja az új sablonalapú SQL-t az előző ujjlenyomattal.

Ha a helyőrző csoport megváltozott, az eltolódási szalagcím összefoglalja a megváltozott elemeket, például a hozzáadott vagy eltávolított helyőrzőket. A bővítmény akkor egyesíti az értékeket előre, ha a helyőrző név vagy pozícióindex szerint továbbra is egyezik. Ha az összes helyőrzőt eltávolítják, a rácsnézet bezárul, és a lekérdezés a szokásos módon fut le.

Tranzakciók megszakítása és helyreállítása

Amíg a paraméterezett futtatás folyamatban van, a Futtatás gomb Leállítás vezérlőre változik (Mégse felirattal). A Megszakítás megszakítja az éppen futó köteget, átugorja a későbbi kötegeket, és a Paraméterek lapot nyitva hagyja, a benne lévő értékeket változatlanul hagyva. A megszakított futtatás nem hiba, hanem a megszakított köteg állapotát jeleníti meg, így a sorok nem jelennek meg hibaként.

A bővítmény nem automatikusan visszaállítja a felhasználó által indított tranzakciókat. Ha a megszakítás után a kapcsolat megszakított tranzakciós állapotban marad, a Paraméterek lapon egy helyreállítási értesítés jelenik meg a következővel: Végrehajtás ROLLBACK. Válassza ki, hogy ugyanazon a kapcsolaton kiadjon egy explicit ROLLBACK-t, majd futtassa újra a szkriptet.

Hibák áttekintése és újrapróbálkozás

Ha egy paraméteres futtatás meghiúsul, a Paraméterek lap megőrzi az értékeket, és megjeleníti a sikertelen állapotot az adatbázis hibaösszegzőjével. Válassza az Üzenetek megtekintése lehetőséget a teljes üzenet részleteinek megnyitásához.

A megszakított futtatások a sikertelen futtatásoktól elkülönítve jelenítik meg a megszakított állapotot, a nem futtatott későbbi kötegek pedig kihagyottként lesznek megjelölve.

Miután kijavított egy értéket vagy típust, válassza ismét a Futtatás lehetőséget. A fül törli az elavult hiba-, megszakítási és sorkiemelési állapotot az új próbálkozáshoz. Ha a kapcsolat még mindig megszakított tranzakcióban van, a helyreállítási értesítés ismét megjelenik.

Lekérdezési előzmények értékének megőrzése

A beállítás pgsql.queryPlaceholders.historyValueRetention azt szabályozza, hogy a paraméterértékek megmaradnak-e az aktuális munkamenet memórián belüli lekérdezési előzményeiben:

Érték Viselkedés
ask Kérdezzen rá minden sikeres paraméterezett futás után.
always A munkamenet-előzménybejegyzések értékeinek megőrzése kérés nélkül.
never Csak a sablonos SQL megőrzése.

Ha ask aktív, a sikeres futtatás után megjelenő üzenet egyszeri mentést kínál (csak ezt a bejegyzést őrizze meg), Mindig mentse (a beállítást alwaysis váltsa át), Kihagyás (csak sablonos SQL esetén), és ne kérdezzen újra (a beállítást neveris állítsa be).

Az értékek csak a memóriában maradnak, és a VS Code újratöltése vagy a munkaterület módosításakor törlődnek. A paraméterértékeket kitakarjuk a telemetriai adatokból és a naplókból.

FELKÉSZÜLÉSi kikötés

PREPARE ... AS SELECT $1 A PostgreSQL kiszolgálóoldali pozíciószintaxisát használja. A bővítmény felismeri az PREPARE utasításokat, és a helyőrzőket a PREPARE törzsében hagyja meg a PostgreSQL számára, ahelyett hogy kliensoldalon kötné őket. Az ugyanabban a szkriptben lévő többi utasítást a rendszer normál módon elemzi.

Nem támogatott MVP-esetek

Az MVP nem tartalmazza a következőket:

  • Az értékek tartós, lemezen tárolt előzményadatai.
  • Elnevezett vagy mentett paraméterkészletek a szerkesztői munkamenetekben.
  • Kiszolgálóoldali PREPARE/EXECUTE újrafelhasználás ügyféloldali paraméteres végrehajtásként.
  • Összetett, tömb, bájt, tartomány, intervallum, szám vagy más típusú kötés a támogatott legördülő listatípusokon túl.