暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

GBase 8s4 Oracle 兼容模式启用重载时,调用存储过程

淮海路小佩奇 2023-05-24
197

打开参数 behavior_compat_options='proc_outparam_override'后,JDBC 调用事先创建的

存储过程,步骤如下:

步骤 1 调用 Connection 的 prepareCall 方法创建调用语句对象。

Connection conn = DriverManager.getConnection("url","user","password"); CallableStatement

cs = conn.prepareCall("{ CALL TEST_PROC(?,?,?) }");

步骤 2 调用 CallableStatement 的 setInt 方法设置参数。

PGobject pGobject = new PGobject();

pGobject.setType("public.compfoo"); // 设置复合类型名,格式为“

schema.typename”。

pGobject.setValue("(1,demo)"); // 绑定复合类型值,格式为“

(value1,value2)”。

cs.setObject(1,

pGobject);

步骤 3 调用 CallableStatement 的 registerOutParameter 方法注册输出参数。

// 注册 out 类型的参数,类型为复合类型,格式为“

schema.typename”。

cs.registerOutParameter(2, Types.STRUCT, "public.compfoo");

步骤 4 调用 CallableStatement 的 execute 执行方法调用。

cs.execute();

步骤 5 调用 CallableStatement 的 getObject 方法获取输出参数。

PGobject result = (PGobject)cs.getObject(2); // 获取 out 参数

result.getValue(); // 获取复合类型字符串形式值。

result.getArrayValue(); //获取复合类型数组形式值,以复合数据类型字段顺序排序。

result.getStruct(); //获取复合类型子类型名,按创建顺序排序。

步骤 6 调用 CallableStatement 的 close 方法关闭调用语句。

cs.close();

// 在数据库创建复合数据类型。

CREATE TYPE compfoo AS (f1 int, f3 text);

// 在数据库中已创建了如下存储过程,它带有 out 参数。

create or replace procedure test_proc (

psv_in in compfoo, psv_out out compfoo

)

as begin

psv_out := psv_in; end; 

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论