Előfizetési szabály SQL-művelet szintaxisa
Az SQL-művelet az üzenet metaadatainak kezelésére szolgál, miután egy előfizetési szabály szűrője kiválasztotta az üzeneteket. Ez egy szöveges kifejezés, amely az SQL-92 szabvány egy részhalmazára támaszkodik. A műveletkifejezések egy sqlExpression
Service Bus Rule
művelettulajdonságának elemével használhatók egy Azure Resource Manager-sablonban, vagy az Azure CLI-parancs az servicebus topic subscription rule create
argumentumában --action-sql-expression
, valamint számos olyan SDK-függvényben, amely lehetővé teszi az előfizetési szabályok kezelését.
<statements> ::=
<statement> [, ...n]
<statement> ::=
<action> [;]
Remarks
-------
Semicolon is optional.
<action> ::=
SET <property> = <expression>
REMOVE <property>
<expression> ::=
<constant>
| <function>
| <property>
| <expression> { + | - | * | / | % } <expression>
| { + | - } <expression>
| ( <expression> )
<property> :=
[<scope> .] <property_name>
Arguments
<scope>
egy nem kötelező sztring, amely a hatókörét jelzi.<property_name>
Az érvényes értékek a következők:sys
vagyuser
.- Az
sys
érték azt jelzi, hogy a Rendszer hatóköre hol<property_name>
található a Service Bus-üzenetben az Üzenetek, hasznos adatok és szerializálás című cikkben leírtak szerint. - Az
user
érték azt jelzi, hogy a felhasználó hatóköre hol<property_name>
található az üzenetben a Service Busnak küldött egyéni tulajdonságok kulcsaként. - Ha
user
nincs megadva, a hatókör az alapértelmezett hatókör<scope>
.
- Az
Remarks
Egy nem létező rendszertulajdonság elérésére tett kísérlet hiba, míg a nem létező felhasználói tulajdonság elérésére tett kísérlet nem hiba. Ehelyett a rendszer egy nem létező felhasználói tulajdonságot belsőleg ismeretlen értékként értékel ki. Az operátorok kiértékelése során a rendszer egy ismeretlen értéket kezel.
property_name
<property_name> ::=
<identifier>
| <delimited_identifier>
<identifier> ::=
<regular_identifier> | <quoted_identifier> | <delimited_identifier>
Arguments
<regular_identifier>
egy sztring, amelyet a következő reguláris kifejezés jelöl:
[[:IsLetter:]][_[:IsLetter:][:IsDigit:]]*
Minden olyan sztringet jelent, amely betűvel kezdődik, és amelyet egy vagy több aláhúzás/betű/számjegy követ.
[:IsLetter:]
Bármely Unicode-karakter, amely Unicode-betűként van kategorizálva. System.Char.IsLetter(c)
Unicode-betűt ad true
c
vissza.
[:IsDigit:]
bármely Unicode-karaktert jelent, amely tizedesjegyként van kategorizálva. System.Char.IsDigit(c)
Unicode-számjegyet ad true
c
vissza.
Nem <regular_identifier>
lehet fenntartott kulcsszó.
<delimited_identifier>
az a sztring, amely bal/jobb szögletes zárójelekkel ([]) van körülzárva. A jobb oldali szögletes zárójel két jobb szögletes zárójelként jelenik meg. Az alábbi példák a következőkre mutatnak be példákat <delimited_identifier>
:
[Property With Space]
[HR-EmployeeID]
<quoted_identifier>
bármely olyan sztring, amely idézőjelekkel van elzárva. A kettős idézőjel az azonosítóban két kettős idézőjelként jelenik meg. Nem ajánlott idézőjeles azonosítókat használni, mert könnyen összetéveszthető egy sztringállandóval. Ha lehetséges, használjon tagolt azonosítót. Íme egy példa:<quoted_identifier>
"Contoso & Northwind"
Minta
<pattern> ::=
<expression>
Remarks
<pattern>
sztringként kiértékelt kifejezésnek kell lennie. Mintaként használják a LIKE operátorhoz. A következő helyettesítő karaktereket tartalmazhatja:
%
: Bármely nulla vagy több karakterből álló sztring._
: Bármely karakter.
escape_char
<escape_char> ::=
<expression>
Remarks
<escape_char>
1 hosszúságú sztringként kiértékelt kifejezésnek kell lennie. A LIKE operátor menekülési karaktereként használatos.
Például a property LIKE 'ABC\%' ESCAPE '\'
sztring helyett az egyezések ABC%
kezdődnek ABC
.
Állandó
<constant> ::=
<integer_constant> | <decimal_constant> | <approximate_number_constant> | <boolean_constant> | NULL
Arguments
<integer_constant>
olyan számok sztringje, amelyek nem idézőjelek közé vannak zárva, és nem tartalmaznak tizedesvesszőt. Az értékek tárolása belsőlegSystem.Int64
történik, és ugyanazt a tartományt követi.Az alábbiakban példákat láthat a hosszú állandókra:
1894 2
<decimal_constant>
olyan számok sztringje, amelyek nem idézőjelek közé vannak zárva, és tizedesvesszőt tartalmaznak. Az értékek tárolása belsőlegSystem.Double
történik, és ugyanazt a tartományt/pontosságot követi.Egy későbbi verzióban ez a szám egy másik adattípusban tárolható a pontos számszemantika támogatásához, ezért ne támaszkodjon arra a tényre, hogy a mögöttes adattípus a következőhöz tartozik
System.Double
<decimal_constant>
.Az alábbiakban példákat láthat a tizedes állandókra:
1894.1204 2.0
<approximate_number_constant>
tudományos jelöléssel írt szám. Az értékek tárolása belsőlegSystem.Double
történik, és ugyanazt a tartományt/pontosságot követi. Az alábbi példák hozzávetőleges számállandókra mutatnak:101.5E5 0.5E-2
boolean_constant
<boolean_constant> :=
TRUE | FALSE
Remarks
A logikai állandókat a kulcsszavak TRUE
vagy FALSE
a . A rendszer az értékeket a System.Boolean
következőképpen tárolja: .
string_constant
<string_constant>
Remarks
A sztringállandók egy idézőjelek közé vannak foglalva, és bármilyen érvényes Unicode-karaktert tartalmaznak. A sztringállandóba beágyazott egyetlen idézőjel két idézőjelként jelenik meg.
Function
<function> :=
newid() |
property(name) | p(name)
Jelenleg és newid()
property(name)
csak a támogatott függvények támogatottak.
Remarks
- A
newid()
függvény aSystem.Guid
metódus általSystem.Guid.NewGuid()
generált értéket adja vissza. - A
property(name)
függvény a hivatkozottname
tulajdonság értékét adja vissza. Azname
érték bármilyen érvényes kifejezés lehet, amely sztringértéket ad vissza.
Példák
Példák : Service Bus-szűrő példák.
Considerations
- Standard kiadás T egy új tulajdonság létrehozására vagy egy meglévő tulajdonság értékének frissítésére szolgál.
- Az REMOVE egy felhasználói tulajdonság eltávolítására szolgál. Csak a felhasználói tulajdonságok távolíthatók el, a rendszertulajdonságok nem.
- Standard kiadás T implicit konverziót hajt végre, ha lehetséges, ha a kifejezés típusa és a meglévő tulajdonságtípus eltérő.
- A művelet meghiúsul, ha a rendszer nem létező tulajdonságaira hivatkozik.
- A művelet nem hiúsul meg, ha a rendszer nem létező felhasználói tulajdonságokra hivatkozik.
- A nem létező felhasználói tulajdonságokat a rendszer belsőleg "Ismeretlen" értékként értékeli ki, az operátorok kiértékelésekor az SQLRuleFilterrel azonos szemantikát követve.
Fontos tudnivalók
Íme néhány fontos pont:
- Csak az üzenet tulajdonságai módosíthatók.
- Minden felhasználói tulajdonság módosítható.
- Az összes nyilvánosan frissíthető rendszertulajdonság módosítható, például
ReplyTo
ésCorreationId
, de azt javasoljuk, hogy szabályművelet részeként ne módosítsa a rendszertulajdonságokat. Visszamenőleges kompatibilitási okokból továbbra is engedélyezett. - Tulajdonságok beállításakor csak numerikus, logikai és sztringkonstansok engedélyezettek. A sztringkonstans viszont a módosítandó tulajdonság alapján típussá alakul. Ha a beállított tulajdonság még nem létezik, nincs típusátalakítás sztringből. Ha a módosítandó tulajdonság már létezik, és az értéke az alábbi típusok
Guid
egyike ,DateTimeOffset
,TimeSpan
,Uri
DateTime
akkor a sztringkonstans erre a típusra lesz konvertálva, és tulajdonságértékként van beállítva. Pontosabban a művelet megpróbálja átalakítani a sztringkonstanst a tulajdonság típusára. Ha sikeres, a tulajdonság be van állítva. Ellenkező esetben a szabályművelet kiértékelése kivételt eredményez, és az üzenet kézbesítetlen.
További lépések
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: