云数据库 GaussDB-执行SQL语句:创建和调用存储过程(入参为复合数据类型)
时间:2025-02-12 15:08:24
创建和调用存储过程(入参为复合数据类型)
以下用例展示A兼容模式下,入参为复合数据类型的存储过程创建和调用情况。前置条件是数据库建连完成、连接对象为conn。
创建存储过程test_proc如下:
1 2 3 4 5 6 7 8 910111213 |
// 在数据库创建复合数据类型。CREATE TYPE compfoo AS (f1 int, f3 text);// 在数据库中创建如下存储过程,它带有out参数。create or replace procedure test_proc( psv_in in compfoo, psv_out out compfoo)asbegin psv_out := psv_in;end;/ |
调用存储过程test_proc如下:
- 设置参数behavior_compat_options='proc_outparam_override'后,调用Connection的prepareCall方法创建调用语句对象cs。
123
Statement statement = conn.createStatement();statement.execute("set behavior_compat_options='proc_outparam_override'");CallableStatement cs = conn.prepareCall("{ CALL TEST_PROC(?,?) }");
- 调用CallableStatement的set方法设置参数。
1234
PGobject pGobject = new PGobject();pGobject.setType("public.compfoo"); // 设置复合类型名,格式为“schema.typename”。pGobject.setValue("(1,demo)"); // 绑定复合类型值,格式为“(value1,value2)”。cs.setObject(1, pGobject);
- 调用CallableStatement的registerOutParameter方法注册输出参数。
12
// 注册out类型的参数,类型为复合类型,格式为“schema.typename”。cs.registerOutParameter(2, Types.STRUCT, "public.compfoo");
- 调用CallableStatement的execute方法执行SQL语句。
1
cs.execute();
- 调用CallableStatement的getObject方法获取输出参数。
1234
PGobject result = (PGobject)cs.getObject(2); // 获取out参数 result.getValue(); // 获取复合类型字符串形式值。result.getArrayValue(); //获取复合类型数组形式值,以复合数据类型字段顺序排序。result.getStruct(); //获取复合类型子类型名,按创建顺序排序。
- 调用CallableStatement的close方法关闭调用语句对象cs。
1
cs.close();

- A兼容模式开启参数后,调用存储过程必须使用{call proc_name(?,?)}形式调用,调用函数必须使用{? = call func_name(?,?)}形式调用(等号左侧的“?”为函数返回值的占位符,用于注册函数返回值)。
- 参数behavior_compat_options='proc_outparam_override'变更后,业务需要重新建立连接,否则无法正确调用存储过程和函数。
- 函数和存储过程中包含复合类型时,参数的绑定与注册需要使用schema.typename形式。
support.huaweicloud.com/centralized-devg-v2-gaussdb/gaussdb_42_0065.html
看了此文的人还看了
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格
推荐文章
- GaussDB设置默认值_GaussDB存储过程_高斯数据库设置默认值-华为云
- GaussDB如何建主键_数据库索引设计规范_高斯数据库如何建主键-华为云
- GaussDB主键生成_GaussDB存储过程_高斯数据库主键生成_华为云
- GaussDB数据库产品特性_华为gaussdb_高斯语法
- 云数据库Gaussdb快速入门_gaussdb连接__gaussdb案例
- GaussDB计算性能_gaussdb递归_高斯数据库计算性能_华为云
- 连接GaussDB数据库_华为高斯数据库_新建数据库_语法
- GaussDB内核_GaussDB数据库内核_高斯数据库内核_华为云
- GaussDB数据库函数和字符串_高斯数据库优势_新建高斯数据库_高斯协议
- RDS for MySQL限流_华为云数据库RDS_自治限流_SQL限流
ServerLess102