Definição de argumentos para UDFs e procedimentos armazenados¶
No CREATE FUNCTION ou CREATE PROCEDURE executado para definir uma função ou procedimento, você especifica argumentos que podem ser transmitidos. Por exemplo:
Quando você chama uma função ou procedimento, os valores dos argumentos são vinculados aos argumentos do manipulador. Eles podem ser vinculados com base em nomes correspondentes ou por posição de argumento, dependendo da linguagem que você estiver usando para o manipulador.
Este tópico fornece diretrizes sobre como especificar os argumentos para uma função ou procedimento.
Limites no número de argumentos de entrada¶
Funções escalares (UDFs) têm um limite de 500 argumentos de entrada.
Especifique os tipos de dados para os argumentos¶
Escolha o tipo de dados SQL que corresponde ao tipo de dados do argumento que você está usando no código do manipulador.
Para obter mais informações sobre como o Snowflake mapeia tipos de dados SQL para os tipos de dados do manipulador, consulte Mapeamentos de tipos de dados entre linguagens do manipulador e SQL.
Omissão do argumento Session para procedimentos Java, Python e Scala¶
Na instrução CREATE PROCEDURE para um procedimento escrito em Java, Python ou Scala, não defina o argumento para o objeto Snowpark Session.
Por exemplo, suponha que o código do manipulador transmita um objeto Session e um objeto String:
Na instrução CREATE PROCEDURE, não defina um argumento para o objeto Session. Em vez disso, apenas defina um argumento para a cadeia de caracteres de entrada:
Session é um argumento implícito que você não especifica ao chamar o procedimento. No tempo de execução, quando você chama seu procedimento armazenado, o Snowflake cria um objeto Session e o passa para seu procedimento armazenado.
Especificação de argumentos opcionais¶
Você pode especificar que um argumento é opcional. Para obter mais detalhes, consulte as próximas seções:
Sobrecarga de funções e procedimentos com argumentos opcionais
Chamada de funções e procedimentos que possuem argumentos opcionais
Designação de um argumento como opcional¶
Se você quiser que um argumento seja opcional, use a palavra-chave DEFAULT para especificar o valor padrão do argumento. Por exemplo:
Para o valor padrão do argumento, você pode usar uma expressão. Por exemplo:
Você deve especificar argumentos opcionais após os argumentos obrigatórios (se houver). Você não pode especificar um argumento opcional antes de um argumento obrigatório.
Sobrecarga de funções e procedimentos com argumentos opcionais¶
Se você estiver sobrecarregando uma função ou procedimento, não poderá usar um argumento opcional para distinguir entre diferentes assinaturas. Por exemplo, suponha que você crie a seguinte UDF que não passa argumentos:
Se você tentar criar uma UDF com o mesmo nome que passe um argumento opcional, a instrução CREATE FUNCTION falhará:
Como outro exemplo, suponha que você crie uma UDF que passe um argumento INTEGER obrigatório:
Se você tentar criar uma UDF com o mesmo nome que passa um argumento INTEGER obrigatório e um argumento opcional, a instrução CREATE FUNCTION falhará:
Isso também afeta os casos em que você usa ALTER FUNCTION… RENAME ou ALTER PROCEDURE… RENAME para renomear uma função ou procedimento. Se você deseja renomear uma função ou procedimento, não pode haver uma função existente com o mesmo nome e assinatura. Argumentos opcionais não distinguem uma assinatura de outra.
Por exemplo, suponha que você crie uma UDF chamada abc_udf que passe um argumento INTEGER obrigatório:
Suponha que você crie uma UDF com um nome diferente (def_udf) que passe um argumento INTEGER obrigatório e um argumento opcional:
Se você tentar alterar o nome de def_udf para abc_udf, ocorrerá um erro porque já existe uma UDF com o mesmo nome e os mesmos tipos de argumentos obrigatórios:
Chamada de funções e procedimentos que possuem argumentos opcionais¶
Para chamar funções e procedimentos que possuem argumentos opcionais, consulte: