Oracleデータベースには、行が挿入されたときにトリガによって自動的に3つの列が移入される表があります。挿入が発生したときにこれらの値を取得するには、手続き型コードを使用していますが、名前付きストアドプロシージャとして存在しません。コードはこのように見えますが、より多くの出力があります。JdbcTemplateでの無名手続き型コードの使用
DECLARE widgetId NUMBER;
BEGIN INSERT INTO widget(foo) VALUES('bar')
RETURNING widget_id INTO widgetId;
END;
春JdbcTemplateは、そのコードを呼び出し、任意のきれいな、便利な方法を提供していますか?私はJdbcTemplateがストアドプロシージャの呼び出しをサポートする場所を見ていますが、コードがデータベースに存在し、名前で呼び出すことができるように見えます。 JdbcTemplateのKeyHolderは有望そうですが、トリガーによって生成された任意の数の値を取得するために使用できるかどうかは完全にはわかりません。私も、単純な例以外に何かを見つけることはあまりありませんでした。誰もがJdbcTemplateを使用してそのコードを呼び出すきれいな方法についての洞察を持っていますか?
例で頭が痛い人のためのサイドノートでは、そのプロシージャコードはベースベースのどこかにあるサンプルに基づいており、JDBCが生成された値を返すための多くのサポートを提供する前に、最近では、より洗練されたソリューションは、KeyHolder.getKeys()。get( "generate_value_column_name")を使用してJDBCテンプレートにKeyHolderを提供し、生成された値を取得することです。私は誰かを助けることを望む。 – spaaarky21