Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Akce SQL slouží k manipulaci s metadaty zpráv po výběru zprávy filtrem pravidla odběru. Jedná se o textový výraz, který se spoléhá na podmnožinu standardu SQL-92. Výrazy akcí se používají s prvkem sqlExpression vlastnosti action služby Service Bus Rule v šabloně Azure Resource Manageru nebo s argumentem příkazu --action-sql-expression Azure CLI az servicebus topic subscription rule create a několika funkcemi sady SDK, které umožňují správu pravidel předplatného.
<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>
Argumenty
-
<scope>je volitelný řetězec označující obor<property_name>. Platné hodnoty jsousysnebouser.- Hodnota
sysoznačuje systémový obor, kde<property_name>je libovolná z vlastností ve zprávě služby Service Bus, jak je popsáno v části Zprávy, datové části a serializace. - Hodnota
useroznačuje obor uživatele, kde<property_name>je klíč vlastních vlastností, které můžete nastavit ve zprávě při odesílání do služby Service Bus. - Obor
userje výchozí obor, pokud<scope>není zadaný.
- Hodnota
Poznámky
Pokus o přístup k neexistující systémové vlastnosti je chyba, zatímco pokus o přístup k neexistující vlastnosti uživatele není chybou. Místo toho je neexistující vlastnost uživatele interně vyhodnocena jako neznámá hodnota. Neznámá hodnota je zpracována speciálně během vyhodnocení operátoru.
property_name
<property_name> ::=
<identifier>
| <delimited_identifier>
<identifier> ::=
<regular_identifier> | <quoted_identifier> | <delimited_identifier>
Argumenty
<regular_identifier> je řetězec reprezentovaný následujícím regulárním výrazem:
[[:IsLetter:]][_[:IsLetter:][:IsDigit:]]*
Znamená to, že jakýkoli řetězec, který začíná písmenem, a za ním následuje jedno nebo více podtržítko/písmeno/číslice.
[:IsLetter:] znamená jakýkoli znak Unicode, který je zařazen do kategorií jako písmeno Unicode.
System.Char.IsLetter(c) vrátí true , pokud c je písmeno Unicode.
[:IsDigit:] znamená jakýkoli znak Unicode, který je zařazený do kategorií jako desetinná číslice.
System.Char.IsDigit(c) vrátí true , pokud c je číslice Unicode.
Nelze <regular_identifier> použít vyhrazené klíčové slovo.
<delimited_identifier> je libovolný řetězec uzavřený s hranatými závorkami zleva/doprava ([]). Pravá hranatá závorka je reprezentována jako dvě pravé hranaté závorky. Tady jsou příklady <delimited_identifier>:
[Property With Space]
[HR-EmployeeID]
<quoted_identifier> je libovolný řetězec uzavřený s dvojitými uvozovkami. Dvojitá uvozovka v identifikátoru je reprezentována jako dvě dvojité uvozovky. Nedoporučuje se používat uvozované identifikátory, protože se dají snadno zaměňovat s řetězcovou konstantou. Pokud je to možné, použijte identifikátor s oddělovači. Tady je příklad <quoted_identifier>:
"Contoso & Northwind"
Vzor
<pattern> ::=
<expression>
Poznámky
<pattern> musí být výraz, který se vyhodnotí jako řetězec. Používá se jako vzor pro operátor LIKE. Může obsahovat následující zástupné znaky:
-
%: Libovolný řetězec s nulovými nebo více znaky. -
_: Libovolný jeden znak.
escape_char
<escape_char> ::=
<expression>
Poznámky
<escape_char> musí být výraz, který se vyhodnotí jako řetězec délky 1. Slouží jako řídicí znak pro operátor LIKE.
Například property LIKE 'ABC\%' ESCAPE '\' odpovídá ABC% namísto řetězce, který začíná řetězcem ABC.
Konstanta
<constant> ::=
<integer_constant> | <decimal_constant> | <approximate_number_constant> | <boolean_constant> | NULL
Argumenty
<integer_constant>je řetězec čísel, která nejsou uzavřena v uvozovkách a neobsahují desetinné čárky. Hodnoty se ukládají interněSystem.Int64a dodržují stejný rozsah.Tady jsou příklady dlouhých konstant:
1894 2<decimal_constant>je řetězec čísel, která nejsou uzavřena v uvozovkách a obsahují desetinnou čárku. Hodnoty se ukládají interněSystem.Doublea odpovídají stejnému rozsahu a přesnosti.V budoucí verzi může být toto číslo uloženo v jiném datovém typu, aby podporovalo přesnou sémantiku čísel, takže byste neměli spoléhat na skutečnost, že podkladový datový typ je
System.Doubleurčený<decimal_constant>.Tady jsou příklady desetinných konstant:
1894.1204 2.0<approximate_number_constant>je číslo napsané ve vědeckém zápisu. Hodnoty se ukládají interněSystem.Doublea odpovídají stejnému rozsahu a přesnosti. Tady jsou příklady přibližných číselných konstant:101.5E5 0.5E-2
boolean_constant
<boolean_constant> :=
TRUE | FALSE
Poznámky
Logické konstanty jsou reprezentovány klíčovými slovy TRUE nebo FALSE. Hodnoty jsou uloženy jako System.Boolean.
string_constant
<string_constant>
Poznámky
Řetězcové konstanty jsou uzavřeny v jednoduchých uvozovkách a obsahují všechny platné znaky Unicode. Jednoduchá uvozovka vložená do řetězcové konstanty je reprezentována jako dvě jednoduché uvozovky.
Function
<function> :=
newid() |
property(name) | p(name)
newid()
property(name) V současné době jsou jediné podporované funkce.
Poznámky
- Funkce
newid()vrátí vygenerovanouSystem.GuidmetodouSystem.Guid.NewGuid(). - Funkce
property(name)vrátí hodnotu vlastnosti, na kterounameodkazuje . Hodnotanamemůže být libovolný platný výraz, který vrací řetězcovou hodnotu.
Příklady
Příklady najdete v příkladech filtru služby Service Bus.
Důležité informace
- SET slouží k vytvoření nové vlastnosti nebo aktualizaci hodnoty existující vlastnosti.
- Funkce REMOVE slouží k odebrání vlastnosti uživatele. Odebrat lze pouze vlastnosti uživatele, nikoli systémové vlastnosti.
- FUNKCE SET provádí implicitní převod, pokud je to možné, pokud je typ výrazu a existující typ vlastnosti odlišné.
- Akce selže, pokud byly odkazovány neexistující systémové vlastnosti.
- Akce se nezdaří, pokud byly odkazovány neexistující vlastnosti uživatele.
- Neexistující vlastnost uživatele se vyhodnocuje interně jako neznámá, protože při vyhodnocování operátorů následuje stejná sémantika jako SQLRuleFilter .
Důležité body
Tady je několik důležitých bodů:
- Lze upravit pouze vlastnosti zprávy.
- Lze upravit všechny vlastnosti uživatele.
- Všechny veřejně aktualizovatelné systémové vlastnosti lze také upravit, například
ReplyToaCorrelationId, ale doporučujeme neměnit systémové vlastnosti jako součást akce pravidla. Je stále povolený z důvodu zpětné kompatibility. - Při nastavování vlastností jsou povoleny pouze číselné, logické a řetězcové literály. Řetězcový literál je převeden na typ založený na změně vlastnosti. Pokud sada vlastností ještě neexistuje, neexistuje žádný převod typu z řetězce. Pokud vlastnost, kterou upravujete, již existuje a její hodnota je jedním z těchto typů
Guid,UriDateTimeOffsetTimeSpanDateTime, pak řetězcový literál je převeden na tento typ a nastaven jako hodnota vlastnosti. Chcete-li být konkrétnější, akce se pokusí převést řetězcový literál na typ vlastnosti. Pokud je tato vlastnost úspěšná, nastaví se tato vlastnost. Jinak vyhodnocení akce pravidla vyvolá výjimku a zpráva je nedoručené.