2012-10-09 1 views
1

How to return multiple rows from the stored procedure? (Oracle PL/SQL)에서 설명한대로, 저장 프로 시저 또는 함수 여러 행을 반환하는이 말스칼라로 저장 프로 시저에서 여러 행을 검색하는 방법은 무엇입니까?

하는 스칼라를 사용하는 좋은 방법이 될 것입니다 무엇 "* 테이블에서 (여기서 all_emps) 선택합니다;" (위의 URL에서 가져온 것) 결과의 여러 행을 읽으십시오.

내가 아는 한 Squeryl을 사용하여이 작업을 수행 할 수 없습니다. 내가 사용할 수있는 Squeryl과 같은 scalaified 도구가 있습니까? 아니면 JDBC로 가져 가야합니까?

답변

2

테이블을 반환하는 함수는 오라클 특정 기능이므로 ORM (스칼라 또는 Java 일 수도 있음)이 이러한 독점적 인 확장을 지원할 수 있을지는 의문입니다. 그래서 나는 당신이 당신 자신에 대해 다소 차이가 있다고 생각합니다. :). 아마도 가장 쉬운 방법은 일반 JDBC java.sql.Statement를 사용하고 executeQuery 메서드로 "select * from table (all_emps)"을 실행하는 것입니다.

+0

PostgreSQL은 같은 것을 가지고 있습니다 : http://jdbc.postgresql.org/documentation/91/callproc.html -하지만 당신이 무슨 뜻인지 알 것입니다, JDBC는 아마도 갈 길입니다. –

0

더 많은 scala-esque 방법으로 테이블에서 선택하는 방법에 대한 질문의 두 번째 부분을 해결하려면 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) 
} 

있지만.

관련 문제