从使用 SQL 创建的存储过程中借助 Scala 访问数据¶
要使用以 Scala 编写的存储过程处理程序访问数据,请使用 Snowpark 库 APIs。
处理对 Scala 存储过程的调用时,Snowflake 会创建一个 Snowpark Session
对象,并将该对象传递给存储过程的方法或函数。
与处理程序是使用其他语言编写的存储过程一样,会话的上下文(例如权限、当前数据库和架构等)取决于存储过程是以调用方权限还是所有者权限运行。有关详细信息,请参阅 访问和设置会话状态。
您可以使用此 Session
对象调用 Snowpark 库 中的 APIs。例如,您可以 :doc:` 为表创建 DataFrame </developer-guide/snowpark/scala/working-with-dataframes>`,或执行 SQL 语句。
有关更多信息,请参阅 Snowpark Scala 开发者指南。
备注
有关限制(包括访问数据的限制)的信息,请参阅 使用 SQL 创建的存储过程中 Scala 的限制。
数据访问示例¶
以下是 Scala 方法的示例,该方法将指定数量的行从一个表复制到另一个表。该方法采用以下实参:
Snowpark
Session
对象要从中复制行的表的名称
要将行保存到的表的名称
要复制的行数
此示例中的方法返回一个字符串。
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"
}
}
以下示例定义了一个函数而不是一个方法:
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"
}
}