Como usar o Script Snowflake no SnowSQL e na Classic Console¶
Este tópico explica como executar os exemplos do Script Snowflake no SnowSQL e na Classic Console.
Nota
Se você estiver usando outros clientes e interfaces (por exemplo, Snowsight ou o driver JDBC), você pode pular este tópico e ir para a próxima seção sobre blocos do Script Snowflake.
Neste tópico:
Introdução¶
Atualmente, o SnowSQL e a Classic Console não analisam corretamente os blocos do Script Snowflake. Entrar e executar um bloco do Script Snowflake pode resultar no seguinte erro:
SQL compilation error: syntax error line 2 at position 25 unexpected '<EOF>'
Para contornar isto, você deve usar delimitadores em torno do início e do fim de um bloco do Script Snowflake se você estiver usando o SnowSQL ou a Classic Console.
As seções a seguir explicam como fazer isso:
Como usar delimitadores de constante de cadeia de caracteres em torno de um bloco em um procedimento armazenado¶
Se você estiver criando um procedimento armazenado no SnowSQL ou na Classic Console, coloque o bloco do Script Snowflake entre aspas simples ou cifrões duplos. Por exemplo:
CREATE OR REPLACE PROCEDURE myprocedure()
RETURNS VARCHAR
LANGUAGE SQL
AS
$$
-- Snowflake Scripting code
DECLARE
radius_of_circle FLOAT;
area_of_circle FLOAT;
BEGIN
radius_of_circle := 3;
area_of_circle := pi() * radius_of_circle * radius_of_circle;
RETURN area_of_circle;
END;
$$
;
Passagem de um bloco como uma cadeia de caracteres literal para EXECUTE IMMEDIATE¶
Se você estiver escrevendo um bloco anônimo, passe o bloco como uma cadeia de caracteres literal para o comando EXECUTE IMMEDIATE. Para delimitar a cadeia de caracteres literal, use aspas simples ou cifrões duplos.
Por exemplo:
EXECUTE IMMEDIATE $$
-- Snowflake Scripting code
DECLARE
radius_of_circle FLOAT;
area_of_circle FLOAT;
BEGIN
radius_of_circle := 3;
area_of_circle := pi() * radius_of_circle * radius_of_circle;
RETURN area_of_circle;
END;
$$
;
Como alternativa, você pode definir uma variável de sessão que seja uma cadeia de caracteres literal contendo o bloco, e você pode passar essa variável de sessão para o comando EXECUTE IMMEDIATE. Por exemplo:
set stmt =
$$
declare
radius_of_circle float;
area_of_circle float;
begin
radius_of_circle := 3;
area_of_circle := pi() * radius_of_circle * radius_of_circle;
return area_of_circle;
end;
$$
;
execute immediate $stmt;