2011-12-22 4 views
1

Oracleデータベースには、行が挿入されたときにトリガによって自動的に3つの列が移入される表があります。挿入が発生したときにこれらの値を取得するには、手続き型コードを使用していますが、名前付きストアドプロシージャとして存在しません。コードはこのように見えますが、より多くの出力があります。JdbcTemplateでの無名手続き型コードの使用

DECLARE widgetId NUMBER; 
BEGIN INSERT INTO widget(foo) VALUES('bar') 
RETURNING widget_id INTO widgetId; 
END; 

春JdbcTemplateは、そのコードを呼び出し、任意のきれいな、便利な方法を提供していますか?私はJdbcTemplateがストアドプロシージャの呼び出しをサポートする場所を見ていますが、コードがデータベースに存在し、名前で呼び出すことができるように見えます。 JdbcTemplateのKeyHolderは有望そうですが、トリガーによって生成された任意の数の値を取得するために使用できるかどうかは完全にはわかりません。私も、単純な例以外に何かを見つけることはあまりありませんでした。誰もがJdbcTemplateを使用してそのコードを呼び出すきれいな方法についての洞察を持っていますか?

+0

例で頭が痛い人のためのサイドノートでは、そのプロシージャコードはベースベースのどこかにあるサンプルに基づいており、JDBCが生成された値を返すための多くのサポートを提供する前に、最近では、より洗練されたソリューションは、KeyHolder.getKeys()。get( "generate_value_column_name")を使用してJDBCテンプレートにKeyHolderを提供し、生成された値を取得することです。私は誰かを助けることを望む。 – spaaarky21

答えて

1

コードはスタンドアロンのプロシージャまたはファンクションである必要があります。また、パッケージ内で外部から参照可能なプロシージャまたはファンクションである必要があります。私が知っている限り、匿名コードを実行する方法はありません。

共有して楽しんでください。

+0

それは私が恐れていたものです。それを確認してくれてありがとう。 – spaaarky21

関連する問題