Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Postgres:从SpringJDBC模板调用函数_Java_Spring_Postgresql_Stored Procedures_Spring Data - Fatal编程技术网

Java Postgres:从SpringJDBC模板调用函数

Java Postgres:从SpringJDBC模板调用函数,java,spring,postgresql,stored-procedures,spring-data,Java,Spring,Postgresql,Stored Procedures,Spring Data,使用spring StoredProcess中的自定义类型调用postgres函数的正确方法是什么 假设我有一个定义的函数和自定义类型: CREATE OR REPLACE FUNCTION addUser(user IN O_USER) RETURNS VOID AS $$ BEGIN end; $$ language plpgsql; CREATE TYPE O_USER AS ( id NUMERIC, name VARCHAR(50) ); 从Spring调用时,我将用户

使用spring StoredProcess中的自定义类型调用postgres函数的正确方法是什么

假设我有一个定义的函数和自定义类型:

CREATE OR REPLACE FUNCTION addUser(user IN O_USER) RETURNS VOID
AS
$$
BEGIN

end;
$$ language plpgsql;

CREATE TYPE O_USER AS (
  id NUMERIC,
  name VARCHAR(50)
);

从Spring调用时,我将用户对象转换为字符串,如下所示:

public class AddUserProcedurePostgres extends StoredProcedure {

    public AddUserProcedurePostgres(DataSource dataSource) {
        super(dataSource, "addUser");
        setFunction(true);

        declareParameter(new SqlParameter("i_User", Types.OTHER, "O_USER"));

        compile();
    }

    public void execute(SessionContext sessionContext, Dashboard dashboard) {

        Map<String, Object> input = new HashMap<>();
        input.put("i_User", "(1,Vishal)");

        execute(input);
    }

}

可以使用SELECT语句简单地调用函数。我不认为有必要将它们映射到存储过程,只需运行
selectadduser(…)
我们还有oracle存储过程,它们是以这种方式实现的,我们必须遵循相同的体系结构。即使我们使用select语句,我们也必须传递需要转换为字符串的对象。对吗?已解决:解决方案如下所述@函数可以使用select语句简单地调用。我不认为有必要将它们映射到存储过程,只需运行
selectadduser(…)
我们还有oracle存储过程,它们是以这种方式实现的,我们必须遵循相同的体系结构。即使我们使用select语句,我们也必须传递需要转换为字符串的对象。对吗?已解决:解决方案如下所述@
CREATE TYPE O_USER AS (
  id NUMERIC,
  name VARCHAR(50)
  addresses O_ADDRESS[]
);