2010-12-20 13 views
1
  1. Groovyを使用してストアドプロシージャを呼び出すにはどうすればよいですか?
  2. Grailsプロジェクト(データベースを作成するためのドメインクラスとして)からストアドプロシージャを作成するにはどうすればよいですか?

答えて

2

Param(この例では 'Sam')をとり、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。 [1、Mon Dec 20 09:44:00 EET 2010、Mon Dec 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 (groovy.lang.GString、groovy.lang.Closure)、call(groovy.lang.GString)、call(groovy.lang.GString) –

+0

sql.callはGStringを受け入れないので、GStringに.toString()を追加することをお勧めします – sbglasius

関連する問題