Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Uma ação SQL é usada para manipular metadados de mensagem depois que uma mensagem é selecionada por um filtro de uma regra de assinatura. É uma expressão de texto que se apoia em um subconjunto do padrão SQL-92. As expressões de ação são usadas com o sqlExpression elemento da propriedade 'action' de um Service Bus Rule em um modelo do Azure Resource Manager ou o argumento do comando da CLI az servicebus topic subscription rule create do --action-sql-expression Azure e várias funções do SDK que permitem gerenciar regras de assinatura.
<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>
Argumentos
-
<scope>é uma cadeia de caracteres opcional que indica o escopo do<property_name>. Os valores válidos sãosysouuser.- O
sysvalor indica o escopo do sistema, onde<property_name>está qualquer uma das propriedades na mensagem do Service Bus, conforme descrito em Mensagens, cargas úteis e serialização. - O
uservalor indica o escopo do usuário onde<property_name>é uma chave das propriedades personalizadas que você pode definir na mensagem ao enviar para o Service Bus. - O
userescopo é o escopo padrão se<scope>não for especificado.
- O
Observações
Uma tentativa de acessar uma propriedade de sistema inexistente é um erro, enquanto uma tentativa de acessar uma propriedade de usuário inexistente não é um erro. Em vez disso, uma propriedade de usuário inexistente é avaliada internamente como um valor desconhecido. Um valor desconhecido é tratado especialmente durante a avaliação do operador.
property_name
<property_name> ::=
<identifier>
| <delimited_identifier>
<identifier> ::=
<regular_identifier> | <quoted_identifier> | <delimited_identifier>
Argumentos
<regular_identifier> é uma cadeia de caracteres representada pela seguinte expressão regular:
[[:IsLetter:]][_[:IsLetter:][:IsDigit:]]*
Significa qualquer cadeia de caracteres que começa com uma letra e é seguida por um ou mais sublinhados/letras/dígitos.
[:IsLetter:] significa qualquer caractere Unicode que é categorizado como uma letra Unicode.
System.Char.IsLetter(c) retorna true se c é uma letra Unicode.
[:IsDigit:] significa qualquer caractere Unicode categorizado como um dígito decimal.
System.Char.IsDigit(c) retorna true se c for um dígito Unicode.
A <regular_identifier> não pode ser uma palavra-chave reservada.
<delimited_identifier> é qualquer cadeia de caracteres entre colchetes esquerdo/direito ([]). Um colchete direito é representado como dois colchetes direitos. Seguem-se exemplos de <delimited_identifier>:
[Property With Space]
[HR-EmployeeID]
<quoted_identifier> é qualquer cadeia de caracteres entre aspas duplas. Uma aspa dupla no identificador é representada como duas aspas duplas. Não é recomendado usar identificadores entre aspas porque pode ser facilmente confundido com uma constante de cadeia de caracteres. Use um identificador delimitado, se possível. Aqui está um exemplo de <quoted_identifier>:
"Contoso & Northwind"
Padrão
<pattern> ::=
<expression>
Observações
<pattern> deve ser uma expressão avaliada como uma cadeia de caracteres. É usado como um padrão para o operador LIKE. Ele pode conter os seguintes caracteres curinga:
-
%: Qualquer cadeia de caracteres de zero ou mais caracteres. -
_: Qualquer caractere único.
escape_char
<escape_char> ::=
<expression>
Observações
<escape_char> deve ser uma expressão avaliada como uma cadeia de caracteres de comprimento 1. É usado como um personagem de escape para o operador LIKE.
Por exemplo, property LIKE 'ABC\%' ESCAPE '\' corresponde ABC% em vez de uma cadeia de caracteres que começa com ABC.
Constante
<constant> ::=
<integer_constant> | <decimal_constant> | <approximate_number_constant> | <boolean_constant> | NULL
Argumentos
<integer_constant>é uma cadeia de números que não estão entre aspas e não contêm pontos decimais. Os valores são armazenados internamenteSystem.Int64e seguem o mesmo intervalo.Seguem-se exemplos de constantes longas:
1894 2<decimal_constant>é uma cadeia de números que não estão entre aspas e contêm um ponto decimal. Os valores são armazenados internamenteSystem.Doublee seguem o mesmo intervalo/precisão.Em uma versão futura, esse número pode ser armazenado em um tipo de dados diferente para oferecer suporte à semântica de número exato, portanto, você não deve confiar no fato de que o tipo de dados subjacente é
System.Doublepara<decimal_constant>.Seguem-se exemplos de constantes decimais:
1894.1204 2.0<approximate_number_constant>é um número escrito em notação científica. Os valores são armazenados internamenteSystem.Doublee seguem o mesmo intervalo/precisão. Seguem-se exemplos de constantes numéricas aproximadas:101.5E5 0.5E-2
boolean_constant
<boolean_constant> :=
TRUE | FALSE
Observações
As constantes booleanas são representadas pelas palavras-chave TRUE ou FALSE. Os valores são armazenados como System.Boolean.
string_constant
<string_constant>
Observações
As constantes de cadeia de caracteres são colocadas entre aspas simples e incluem todos os caracteres Unicode válidos. Uma única aspa incorporada em uma constante de cadeia de caracteres é representada como duas aspas simples.
Function
<function> :=
newid() |
property(name) | p(name)
Atualmente, newid() e property(name) são as únicas funções suportadas.
Observações
- A
newid()função retorna umSystem.Guidgerado peloSystem.Guid.NewGuid()método. - A
property(name)função retorna o valor da propriedade referenciada porname. Onamevalor pode ser qualquer expressão válida que retorna um valor de cadeia de caracteres.
Exemplos
Para obter exemplos, consulte Exemplos de filtro do Service Bus.
Considerações
- SET é usado para criar uma nova propriedade ou atualizar o valor de uma propriedade existente.
- REMOVE é usado para remover uma propriedade de usuário. Somente as propriedades do usuário podem ser removidas, não as propriedades do sistema.
- SET executa a conversão implícita, se possível, quando o tipo de expressão e o tipo de propriedade existente são diferentes.
- A ação falhará se propriedades do sistema inexistentes forem referenciadas.
- A ação não falhará se propriedades de usuário inexistentes forem referenciadas.
- Uma propriedade de usuário inexistente é avaliada como "Unknown" internamente, seguindo a mesma semântica de SQLRuleFilter ao avaliar operadores.
Pontos importantes
Aqui estão alguns pontos importantes:
- Somente as propriedades de uma mensagem podem ser modificadas.
- Todas as propriedades do usuário podem ser modificadas.
- Todas as propriedades do sistema atualizáveis publicamente também podem ser modificadas, como
ReplyToeCorrelationId, mas recomendamos que você não altere as propriedades do sistema como parte de uma ação de regra. Ainda é permitido por motivos de compatibilidade com versões anteriores. - Ao definir propriedades, apenas literais numéricos, booleanos e de cadeia de caracteres são permitidos. Um literal de cadeia de caracteres, por sua vez, é convertido em um tipo com base na propriedade que está sendo modificada. Se a propriedade que está sendo definida ainda não existir, não haverá conversão de tipo de string. Se a propriedade que está sendo modificada já existe e seu valor é um desses tipos
Guid, ,DateTimeOffset,TimeSpanUri,DateTime, então o literal de cadeia de caracteres é convertido para esse tipo e definido como o valor da propriedade. Para ser mais específico, a ação tenta converter a cadeia de caracteres literal para o tipo de propriedade. Se for bem-sucedido, a propriedade será definida. Caso contrário, a avaliação da ação da regra lançará uma exceção e a mensagem será escrita em letra morta.