JDBCIO 调用 Postgres 例程(存储过程),它将自定义对象类型作为参数

我正在尝试调用一个Postgres例程,该例程将自定义对象类型作为参数。


create type person_type as

(

  first        varchar,

  second varchar,

  is_real     boolean

);

我的例程(存储过程):


create function person_routine(person person_type)

returns void

language plpgsql

as $$


BEGIN

  INSERT INTO person(first, second, is_real) VALUES 

(person.first,person.second,person.is_real);


END;

$$;

然后,我尝试创建一个 Java 类来表示自定义类型:


import java.sql.SQLData;

import java.sql.SQLException;

import java.sql.SQLInput;

import java.sql.SQLOutput;


public class PersonType implements SQLData {


public String first;

public String second;

public boolean is_real;

private String sql_type;


@Override

public String getSQLTypeName() throws SQLException {

    return sql_type;

}


@Override

public void readSQL(SQLInput stream, String typeName) throws SQLException {

    sql_type = typeName;

    second = stream.readString();

    first = stream.readString();

    is_real = stream.readBoolean();

}


@Override

public void writeSQL(SQLOutput stream) throws SQLException {

    stream.writeString(first);

    stream.writeBoolean(is_real);

    stream.writeString(second);

}

}


白猪掌柜的
浏览 79回答 1
1回答

芜湖不芜

所以,这是关于使用PGobject()。这就是我实现它的方式,它似乎工作得很好。 PGobject person = new PGobject(); person.setType("person_type"); person.setValue(String.format("(%s,%s,%s)","something","something","FALSE")); query.setObject(1, person);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java