Megosztás a következőn keresztül:


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 vagy user.
    • 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> .

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 truec vissza.

[:IsDigit:] bármely Unicode-karaktert jelent, amely tizedesjegyként van kategorizálva. System.Char.IsDigit(c) Unicode-számjegyet ad truec 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őleg System.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őleg System.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őleg System.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 FALSEa . A rendszer az értékeket a System.Booleankö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 a System.Guid metódus által System.Guid.NewGuid() generált értéket adja vissza.
  • A property(name) függvény a hivatkozott nametulajdonság értékét adja vissza. Az name é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 és CorreationId, 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 Guidegyike , DateTimeOffset, TimeSpan, UriDateTimeakkor 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