从使用 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"
  }
}
Copy

以下示例定义了一个函数而不是一个方法:

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"
  }
}
Copy
语言: 中文