云数据库 GAUSSDB-执行SQL语句:Oracle兼容模式启用重载时,调用存储过程
时间:2024-11-02 18:52:46
Oracle兼容模式启用重载时,调用存储过程
打开参数behavior_compat_options='proc_outparam_override'后,JDBC调用事先创建的存储过程,步骤如下:
- 调用Connection的prepareCall方法创建调用语句对象。
1 2 3 4 5 6
// 认证用的用户名和密码直接写到代码中有很大的安全风险,建议在配置文件或者环境变量中存放(密码应密文存放,使用时解密),确保安全; // 本示例以用户名和密码保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量(环境变量名称请根据自身情况进行设置)EXAMPLE_USERNAME_ENV和EXAMPLE_PASSWORD_ENV。 String userName = System.getenv("EXAMPLE_USERNAME_ENV"); String password = System.getenv("EXAMPLE_PASSWORD_ENV"); Connection conn = DriverManager.getConnection("url",userName,password); CallableStatement cs = conn.prepareCall("{ CALL TEST_PROC(?,?,?) }");
- 调用CallableStatement的setInt方法设置参数。
1 2 3 4
PGobject pGobject = new PGobject(); pGobject.setType("public.compfoo"); // 设置复合类型名,格式为“schema.typename”。 pGobject.setValue("(1,demo)"); // 绑定复合类型值,格式为“(value1,value2)”。 cs.setObject(1, pGobject);
- 调用CallableStatement的registerOutParameter方法注册输出参数。
1 2
// 注册out类型的参数,类型为复合类型,格式为“schema.typename”。 cs.registerOutParameter(2, Types.STRUCT, "public.compfoo");
- 调用CallableStatement的execute执行方法调用。
1
cs.execute();
- 调用CallableStatement的getObject方法获取输出参数。
1 2 3 4
PGobject result = (PGobject)cs.getObject(2); // 获取out参数 result.getValue(); // 获取复合类型字符串形式值。 result.getArrayValue(); //获取复合类型数组形式值,以复合数据类型字段顺序排序。 result.getStruct(); //获取复合类型子类型名,按创建顺序排序。
- 调用CallableStatement的close方法关闭调用语句。
1
cs.close();
- oracle兼容模式开启参数后,调用存储过程必须使用{call proc_name(?,?,?)}形式调用,调用函数必须使用{? = call func_name(?,?)}形式调用(等号左侧的“?”为函数返回值的占位符,用于注册函数返回值)。
- 参数behavior_compat_options='proc_outparam_override'行为变更后,业务需要重新建立连接,否则无法正确调用存储过程和函数。
- 函数和存储过程中包含复合类型时,参数的绑定与注册需要使用schema.typename形式。
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
// 在数据库创建复合数据类型。 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; / |
support.huaweicloud.com/centralized-devg-v2-gaussdb/devg_03_0096.html
看了此文的人还看了
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格
推荐文章
- 云数据库GaussDB(for MySQL)_兼容MySQL
- 数据库软件免费版_免费在线数据库_免费的数据库管理软件
- 免费云数据库MySQL_MySQL数据库免费_MySQL数据库是免费的吗
- GaussDB设置默认值_GaussDB存储过程_高斯数据库设置默认值-华为云
- 免费的MySQL云数据库_数据库管理系统有哪些_MySQL查询表
- GaussDB查版本命令_GaussDB命令参考_高斯数据库查版本命令-华为云
- GaussDB内核_GaussDB数据库内核_高斯数据库内核_华为云
- 云数据库RDS for MySQL存储空间自动扩容_存储空间_自动扩容_MySQL云盘
- GaussDB性能_性能统计_高斯数据库性能-华为云
- GaussDB数据库产品特性_华为gaussdb_高斯语法