PB9通过ODBC调用MySQL8.0存储过程示例
该资源提供了一个使用PowerBuilder (PB) 通过ODBC连接MySQL数据库并调用存储过程的示例。存储过程适用于MySQL 8.0版本,可能不适用于5.7及以下版本,因为旧版本的ODBC支持可能有限。 在PowerBuilder中调用MySQL存储过程通常涉及以下步骤: 1. **配置SQLCA(SQL Control Area)**: SQLCA是一个结构,用于在PB应用程序中处理SQL语句的执行和错误处理。在示例中,DBMS属性被设置为"ODBC",表明使用的是ODBC驱动程序。AutoCommit被设为False,意味着在执行完SQL操作后不会自动提交事务。DBParm字段包含了DSN、UID、PWD等连接信息,用于连接到MySQL服务器上的特定数据库。 2. **连接数据库**: 使用`connectusingSQLCA`来建立与ODBC数据源的连接。如果连接失败,将通过检查SQLCA的sqlcode属性来捕获错误,并通过messagebox显示错误信息。 3. **设置SQL模式**: 在调用存储过程之前,可能需要设置SQL模式,例如在示例中,`ls_sql`变量包含的SQL语句`SETSQL_MODE='CLIENT_IGNORE_SPACE'`,用于改变客户端解析SQL语句时对空格的处理。 4. **定义和调用存储过程**: 示例中的存储过程名为`SP_PRO_TEST`,接受四个参数:`INV_IDENTITY_TABLE`,`INV_TABLENAME`,`INV_COUNT`和一个输出参数`VS_DQZ`。存储过程内部声明了多个局部变量,用于处理可能的异常和数据处理。例如,`DECLARE V_ERROMSG VARCHAR(1024)`用来存储错误信息,`DECLARE V_DQZ INT`用于返回特定的返回值。 5. **异常处理**: 存储过程中设置了异常处理机制,包括`SQLEXCEPTION`和`NOTFOUND`的处理。在`SQLEXCEPTION`处理中,利用`GETDIAGNOSTICS`获取错误信息,回滚事务并设置输出参数`VS_DQZ`为-1表示出错。`NOTFOUND`处理则用于捕获没有找到数据的情况。 6. **执行存储过程**: 调用存储过程需要在PB中使用类似`EXECUTE IMMEDIATE`的语法,将存储过程的名称和参数传递进去。例如,调用`SP_PRO_TEST`的代码可能是这样的: ```pb ls_sql = "CALL SP_PRO_TEST('param1', 'param2', 123, ?)" EXECUTE IMMEDIATE ls_sql USING OUT ls_result; ``` 其中,`ls_result`用于接收输出参数`VS_DQZ`的值。 7. **关闭数据窗口**: 示例中未明确显示,但通常在完成所有数据库操作后,会使用`Close`方法关闭数据窗口以释放资源。 这个例子展示了如何在PB环境中通过ODBC与MySQL 8.0进行交互,调用存储过程,并处理可能出现的异常情况。对于开发人员来说,理解这些步骤有助于在自己的项目中实现类似的数据库操作。
SQLCA.DBMS = "ODBC"
SQLCA.AutoCommit = False
SQLCA.DBParm = "ConnectString='DSN=test;UID=root;PWD=123456;SERVER=192.168.10.111;DATABASE=MY_TEST;Option=8'"
connect using SQLCA ;
IF sqlca.sqlcode <> 0 then
ls_errtext = SQLCA.SQLErrtext
messagebox("提示信息","无法连接上mysql服务器的数据库~r~n" + ls_errtext)
RETURN
END IF
string ls_sql
ls_sql = "SET SQL_MODE='CLIENT_IGNORE_SPACE'"
EXECUTE IMMEDIATE :ls_sql ;
open(w_main_test)
CREATE DEFINER=`root`@`%` PROCEDURE `SP_PRO_TEST`( IN V_IDENTITY_TABLE VARCHAR(40) ,
IN V_TABLENAME VARCHAR(40),IN V_COUNT int,OUT VS_DQZ VARCHAR(40))
begin
DECLARE V_SQL VARCHAR(500);
DECLARE V_SQLU VARCHAR(500);
DECLARE V_UPPER_V_TABLENAME VARCHAR(40) ;
下载后可阅读完整内容,剩余3页未读,立即下载
- 粉丝: 8
- 资源: 6
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 李兴华Java基础教程:从入门到精通
- U盘与硬盘启动安装教程:从菜鸟到专家
- C++面试宝典:动态内存管理与继承解析
- C++ STL源码深度解析:专家级剖析与关键技术
- C/C++调用DOS命令实战指南
- 神经网络补偿的多传感器航迹融合技术
- GIS中的大地坐标系与椭球体解析
- 海思Hi3515 H.264编解码处理器用户手册
- Oracle基础练习题与解答
- 谷歌地球3D建筑筛选新流程详解
- CFO与CIO携手:数据管理与企业增值的战略
- Eclipse IDE基础教程:从入门到精通
- Shell脚本专家宝典:全面学习与资源指南
- Tomcat安装指南:附带JDK配置步骤
- NA3003A电子水准仪数据格式解析与转换研究
- 自动化专业英语词汇精华:必备术语集锦