Acesso a dados com Scala a partir de procedimentos armazenados criados com SQL¶
Para acessar dados com um manipulador de procedimento armazenado escrito em Scala, use as APIs da biblioteca Snowpark.
Ao tratar uma chamada para seu procedimento armazenado em Scala, o Snowflake cria um objeto Session Snowpark e passa o objeto para o método ou função do seu procedimento armazenado.
Como no caso de procedimentos armazenados cujos manipuladores são escritos em outras linguagens, o contexto da sessão (incluindo os privilégios, o banco de dados e o esquema atuais etc.) é determinado pelo fato de o procedimento armazenado ser executado com os direitos do chamador ou do proprietário. Para obter mais detalhes, consulte Acesso e configuração do estado da sessão.
You can use this Session object to call APIs in the
Snowpark library.
For example, you can create a DataFrame for a table or execute a
SQL statement.
Consulte o Guia do Desenvolvedor do Snowpark para Scala para obter mais informações.
Nota
Para obter mais informações sobre limitações, incluindo limitações no acesso aos dados, consulte Limitações para Scala em procedimentos armazenados criados com SQL.
Exemplo de acesso aos dados¶
A seguir, um exemplo de um método Scala que copia um número especificado de linhas de uma tabela para outra tabela. O método utiliza os seguintes argumentos:
Um objeto
Sessiondo SnowparkO nome da tabela para copiar as linhas de
O nome da tabela para salvar as linhas para
O número de linhas a copiar
O método neste exemplo retorna uma cadeia de caracteres.
object MyObject
{
def myProcedure(session: com.snowflake.snowpark.Session, fromTable: String, toTable: String, count: Int): String =
{
session.table(fromTable).limit(count).write.saveAsTable(toTable)
return "Success"
}
}
O exemplo seguinte define uma função, em vez de um método:
object MyObject
{
val myProcedure = (session: com.snowflake.snowpark.Session, fromTable: String, toTable: String, count: Int): String =>
{
session.table(fromTable).limit(count).write.saveAsTable(toTable)
"Success"
}
}