2010-12-20 8 views
1
  1. Groovy를 사용하여 저장 프로 시저를 호출하려면 어떻게해야합니까?
  2. Grails 프로젝트 (데이터베이스를 생성하기위한 도메인 클래스)에서 저장 프로 시저를 어떻게 만들 수 있습니까?

답변

2

매개 변수 (예 : 샘)를 취하고 VARCHAR을 리턴하는 FullName 저장 프로시 듀어를 호출하는 예제.

sql.call("{? = call FullName(?)}", [Sql.VARCHAR, 'Sam']) { name -> 
    assert name == 'Sam Pullara' 
} 

같은 예를 다시하지만 G 스트링 변화와 :

sql.call '{call Hemisphere(?, ?, ?)}', ['Guillaume', 'Laforge', Sql.VARCHAR], { dwells -> 
    println dwells // => Northern Hemisphere 
} 

this를 참조 : 여기

def first = 'Sam' 
sql.call("{$Sql.VARCHAR = call FullName($first)}") { name -> 
    assert name == 'Sam Pullara' 
} 

는 아웃 파라미터 저장 프로 시저의 예이다.

+0

나는이 방법을 시도하지만 여전히 오류가 있습니다. 메소드의 서명이 없습니다. 정적 groovy.sql.Sql.call()은 인수 유형에 적용 가능합니다. (java.lang.String, java.util.ArrayList, vltrafficmonitor. (예 : CDRController $ _closure3_closure4) values ​​: [{call call endpoint_stats_get (?,?,?,?)}, [1 월 12 일 월요일 09:44:00] 2010 년 12 월 20 일 09:44:00 EET 2010, Sql % ROWTYPE], [email protected]] –

+0

가능한 솔루션 : call (java.lang.String), call (java.lang.String, [Ljava.lang.Object]), call (java.lang.String, java call (groovy.lang.GString), call (groovy.lang.GString, groovy.lang.Closure), call (groovy.lang.GString), call (groovy.lang.GString), call –

+0

sql.call은 GString을 허용하지 않으므로 GString에 .toString()을 추가하는 것이 좋습니다. – sbglasius

관련 문제