sql >> データベース >  >> RDS >> Oracle

SpringPersistenceフレームワークを使用してOracle関数またはストアドプロシージャを呼び出す方法は?

    JdbcTemplateを参照していると仮定します:

    jdbcTemplate.execute(
        new CallableStatementCreator() {
            public CallableStatement createCallableStatement(Connection con) throws SQLException{
                CallableStatement cs = con.prepareCall("{call MY_STORED_PROCEDURE(?, ?, ?)}");
                cs.setInt(1, ...); // first argument
                cs.setInt(2, ...); // second argument
                cs.setInt(3, ...); // third argument
                return cs;
            }
        },
        new CallableStatementCallback() {
            public Object doInCallableStatement(CallableStatement cs) throws SQLException{
                cs.execute();
                return null; // Whatever is returned here is returned from the jdbcTemplate.execute method
            }
        }
    );
    

    関数の呼び出しはほとんど同じです:

    jdbcTemplate.execute(
        new CallableStatementCreator() {
            public CallableStatement createCallableStatement(Connection con) {
                CallableStatement cs = con.prepareCall("{? = call MY_FUNCTION(?, ?, ?)}");
                cs.registerOutParameter(1, Types.INTEGER); // or whatever type your function returns.
                // Set your arguments
                cs.setInt(2, ...); // first argument
                cs.setInt(3, ...); // second argument
                cs.setInt(4, ...); // third argument
                return cs;
            }
        },
        new CallableStatementCallback {
            public Object doInCallableStatement(CallableStatement cs) {
                cs.execute();
                int result = cs.getInt(1);
                return result; // Whatever is returned here is returned from the jdbcTemplate.execute method
            }
        }
    );
    


    1. SQL Server認証とWindows認証:どちらをいつ使用するか

    2. T-SQLのPRINTステートメント

    3. すべてのテーブル(PostgreSQL)で特定の値を検索するにはどうすればよいですか?

    4. plpgsqlを介してPostgresからテーブルの主キーを取得するにはどうすればよいですか?