Como determinar o número de linhas afetadas por comandos DML¶
Depois que um comando DML é executado (excluindo o comando TRUNCATE TABLE), o Snowflake Scripting define as seguintes variáveis globais. Você pode usar essas variáveis para determinar se a última instrução DML afetou alguma linha.
Variável |
Descrição |
|---|---|
|
Número de linhas afetadas pela última instrução DML. Isso é equivalente a |
|
|
|
|
Nota
O pacote de mudança de comportamento 2025_01 altera o comportamento dessas variáveis. Quando o pacote está ativado, as variáveis retornam NULL quando uma instrução que não é DML é executada após a última instrução DML em um bloco do Snowflake Scripting ou procedimento armazenado. O pacote é ativado por padrão. Para obter mais informações sobre a mudança de comportamento, consulte Snowflake Scripting: alterações das variáveis globais.
Se o pacote estiver desativado, você pode ativá-lo na sua conta executando o seguinte comando:
Para desativar o pacote, execute a seguinte instrução:
Os exemplos nesta seção usam a seguinte tabela:
O exemplo a seguir usa a variável SQLROWCOUNT para retornar o número de linhas afetadas pela última instrução DML (a instrução INSERT).
Note: If you use Snowflake CLI, SnowSQL, the Classic Console, or the
execute_stream or execute_string method in Python Connector
code, use this example instead (see Using Snowflake Scripting in Snowflake CLI, SnowSQL, and Python Connector):
O exemplo a seguir usa as variáveis SQLFOUND e SQLNOTFOUND para retornar o número de linhas afetadas pela última instrução DML (a instrução UPDATE).
Note: If you use Snowflake CLI, SnowSQL, the Classic Console, or the
execute_stream or execute_string method in Python Connector
code, use this example instead (see Using Snowflake Scripting in Snowflake CLI, SnowSQL, and Python Connector):
Quando o bloco anônimo é executado, a variável SQLFOUND é true porque a instrução UPDATE atualiza duas linhas.
Consulte a tabela para ver os valores atuais:
Execute o mesmo bloco anônimo novamente, e os resultados são os seguintes:
A instrução UPDATE é executada porque há um valor na tabela que é maior que
2. Ou seja, a condição IF é satisfeita.A variável
SQLNOTFOUNDétrueporque nenhuma linha é atualizada. A instrução UPDATE não atualiza nenhuma linha porque nenhum dos valores da tabela é menor que3(especificado na cláusula WHERE).
A consulta retorna a seguinte saída:
Agora, atualize a tabela para definir todos os valores como 1:
Execute o mesmo bloco anônimo novamente e a instrução UPDATE não será executada porque nenhum dos valores da tabela é maior que 2. Ou seja, a condição IF não é satisfeita, portanto, a instrução UPDATE não é executada.