1

ストアド プロシージャから複数の行を返す方法で説明したように、複数の行を返すストアド プロシージャまたは関数があるとします。(オラクル PL/SQL)

Scala を使用して "select * from table (all_emps);" を実行するにはどうすればよいでしょうか。(上記のURLから取得)結果となる複数行のデータを読み取りますか?

私が見る限り、Squeryl を使用してこれを行うことはできません。使用できる Squeryl のような拡張ツールはありますか、それとも JDBC にドロップする必要がありますか?

4

2 に答える 2

2

テーブルを返す関数は Oracle 固有の機能です。ORM (Scala であろうと Java であろうと) がそのような独自の拡張機能をサポートしているとは思えません。だから私はあなたが多かれ少なかれ自分でいると思います:)。おそらく最も簡単な方法は、プレーンな JDBC java.sql.Statement を使用し、executeQuery メソッドで「select * from table (all_emps)」を実行することです。

于 2012-10-09T14:50:20.700 に答える
0

よりスカラ風の方法でテーブルから選択する方法についての質問の2番目の部分に対処するために、私はSlickを使用しています。サンプル ドキュメントからの引用:

case class Coffee(name: String, supID: Int, price: Double)

implicit val getCoffeeResult = GetResult(r => Coffee(r.<<, r.<<, r.<<))

Database.forURL("...") withSession {
Seq(
Coffee("Colombian", 101, 7.99),
Coffee("Colombian_Decaf", 101, 8.99),
Coffee("French_Roast_Decaf", 49, 9.99)
).foreach(c => sqlu"""
insert into coffees values (${c.name}, ${c.supID}, ${c.price})
""").execute)

val sup = 101
val q = sql"select * from coffees where sup_id = $sup".as[Coffee]
// A bind variable to prevent SQL injection ^
q.foreach(println)
}

保存されたプロシージャ/関数を(もしあったとしても)どのように扱っているかはわかりませんが。

于 2012-10-10T11:35:15.393 に答える