9.OB4.0调用存储过程通过临时表返回多行记录

2023-10-26

--MYSQL存储过程返回多行。

1.表数据准备
 

drop table if exists t1;
drop table if exists t2;
drop table if exists t3;
create table t1(id varchar(20),data int )default charset gbk;
create table t2(id int) default charset gbk;
create table t3(id varchar(20),c int)default charset gbk;
insert into t1 values ('xsq',1),('xsq2',2),('xsq3',3),('薛双奇',4),('北京',5);
insert into t2 values (1),(2),(3),(4);

select * from t1;
select * from t2;
select * from t3;


2.创建存储过程。

drop PROCEDURE curdemo;


delimiter //
CREATE PROCEDURE curdemo()
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE a CHAR(16);
DECLARE b,c INT;
DECLARE cur1 CURSOR FOR SELECT id,data FROM sjzt.t1;
DECLARE cur2 CURSOR FOR SELECT id FROM sjzt.t2;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
OPEN cur1;
OPEN cur2;
truncate table sjzt.t3;
REPEAT FETCH cur1 INTO a, b;
FETCH cur2 INTO c;
IF NOT done THEN
IF b < c THEN
INSERT INTO sjzt.t3 VALUES (a,b);
ELSE
INSERT INTO sjzt.t3 VALUES (a,c);
END IF;
END IF;
UNTIL done
END REPEAT;
CLOSE cur1;
CLOSE cur2;
DROP TABLE IF EXISTS TEMP_T3;
CREATE TEMPORARY TABLE TEMP_T3(ID VARCHAR(20),C INT);
INSERT INTO TEMP_T3 SELECT * FROM T3;
SELECT * FROM TEMP_T3;
END;
//

3.调用存储过程。

call curdemo();

MySQL [sjzt]> call curdemo();
-> //
+-----------+------+
| ID | C |
+-----------+------+
| xsq | 1 |
| xsq2 | 2 |
| xsq3 | 3 |
| 薛双奇 | 4 |
+-----------+------+
4 rows in set (0.78 sec)

4.帆软前端调用存储过程。

(1)添加数据库模板

2)预览存储过程,会执行并输出存储过程。可以发现会返回多行。

 

3)创建数据库连接。

由于OB不支持UTF8字符集,支持GBK和UTF8MB4。而帆软支持GBK和UTF8,所以如果有中文,必须设置为GBK字符集才能正常显示。

 

数据库连接。连接OB就当做MySQL连接,只是连接时需要注意用户部分,

填写的是:用户名@租户名#集群名称。

数据库:MySQL 

驱动:com.mysql.jdbc.Driver 

主机:192.168.1.61 

端口:2883   --OBPROXY 代理服务端口是2883;

数据库:sjzt    --sjzt用户登录到sjzt数据库

用户:sjzt@tent_t1#hjzqobce        --hjzqobce集群下 tent_t1租户(实例)下 sjzt用户登录。

密码:sjzt    --数据中台用户的密码:sjzt 

编码:GBK   --字符集设置为GBK 

URL:jdbc:mysql://192.168.1.61:2883/sjzt 

hjzqobce:集群名称。

tent_t1:租户名称

连接串解释:

hjzqobce集群下 tent_t1租户里面 sjzt用户通过2883端口登录到sjzt 数据库,登录密码是:sjzt 

mysql -h192.168.1.61 -usjzt@tent_t1#hjzqobce -P2883 -p'sjzt' -c -A sjzt

[admin@obcontrol ~]$ mysql -h192.168.1.61 -usjzt@tent_t1#hjzqobce -P2883 -p'sjzt' -c -A sjzt
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 39
Server version: 5.6.25 OceanBase_CE 4.0.0.0 (r103000022023011215-05bbad0279302d7274e1b5ab79323a2c915c1981) (Built Jan 12 2023 15:28:27)

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [sjzt]>
MySQL [sjzt]>
MySQL [sjzt]> show tables;
+----------------+
| Tables_in_sjzt |
+----------------+
| emp |
| myt1 |
| myt2 |
| t1 |
| t2 |
| t2_m_rcr |
| t3 |
| t_m_rclc |
| t_m_rcrc |
| tbl1 |
| tbl1_h |
| tbl1_k |
| tbl1_l |
| tbl1_lc |
| tbl1_log_rc |
| tbl1_r |
| tbl2 |
| tbl3 |
| tbl4 |
| tbl5 |
| tbl6 |
| tbl7 |
| tbl_rr |
| test |
| test1 |
| test2 |
| test3 |
| test4 |
| ttgh |
| ttgh2 |
| v_emp |
+----------------+
31 rows in set (0.01 sec)

 5.总结

如果使用帆软展示OB4.0.的数据,且要执行存储过程,则需要将OB的表设置为GBK字符集,否则中文乱码。

OB存储过程支持游标,临时表,返回多行数据。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

9.OB4.0调用存储过程通过临时表返回多行记录 的相关文章

  • php codeigniter 中的 concat

    请帮助我理解正确的连接语法 我有一个名为存货其中有 trans id trans items items gt item id trans user employees gt person id trans date trans comme
  • 使用 PHP json_encode() 和 MySQL 返回 JSON 对象以传递给 jQuery 函数 [重复]

    这个问题在这里已经有答案了 我正在尝试从 MySQL 结果创建一个 json 对象 但没有得到我需要的结果 这是 PHP json array result mysqli query connection query echo while
  • MySQL 更新时会覆盖相同值的列吗?

    在MySQL中更新表时 例如 Table user user id user name 1 John 2 Joseph 3 Juan 如果我运行查询 UPDATE user SET user name John WHERE user id
  • 在 mysql 中搜索带变音符号的阿拉伯语

    所以我有一个巨大的带有变音符号的阿拉伯语书面文本数据库 变音符号是阿拉伯语中附加到其他字符的小字符 例如 带变音符号 不带变音符号 我正在使用 mysql 和 laravel 在文本中搜索没有变音符号的特定单词 如何忽略搜索中的变音符号 看
  • PHP:如何使浏览器点击下载文件

    PHP 初学者 文件上传成功 但我的浏览器不下载文件 而是读取文件 所以我参考了其他线程并发现下面的代码不起作用 我想在单击超链接时下载文件download 从MySQL数据库中选择路径 rows mysqli num rows resul
  • Rails中有类似批量更新的东西吗?

    在Java中 我们有像下面的java代码这样的批处理执行 Statement statement null statement connection createStatement statement addBatch update peo
  • android OkHttpClient请求错误

    我正在尝试使用我的 Android 应用程序在 mysql 数据库中存储一些数据 我正在使用 okhttp3 发送请求 但在这一行出现错误 client newCall request execute 我在本地机器和在线上尝试过 但它给了我
  • 使用 SwiftMailer 批量发送电子邮件

    我目前正在使用迅捷邮递员 http swiftmailer org向多个用户 最多 50 个 发送电子邮件 我已将其设置并正常工作 但是 我不太确定如何从 MySQL 数据库中提取收件人并迭代发送它们 这是我目前拥有的
  • iPhone:通过互联网连接到数据库?

    我一直在和某人谈论 iPhone 开发合同工作的可能性 目前我真正知道的是 有一家公司想要制作一款 iPhone 应用程序 该应用程序将访问其内部数据库 我不确定数据库类型是什么 Oracle MySQL 等 我想知道数据库类型是 Orac
  • 使用PHP搜索MySQL并在同一页面显示结果

    这绝对是一个新手问题 但如果您能提供任何帮助 我将非常感激 基本上 我正在构建一个数据库管理页面 它当然包括搜索功能 所以 搜索表单看起来像这样
  • mysql_real_escape_string 未定义

    我正在使用 PHP 版本 5 3 并尝试使用mysql real escape string unescaped string 在我的代码中 但出现错误 Fatal error Call to undefined function mysq
  • MySQL 视图:在另一个计算字段中引用一个计算字段(按名称)

    例如 如何定义具有两个计算字段的视图 TableName BlueSquares TableName RedSquares AS TotalSquares TableName BlueCirles TableName RedCircles
  • 如果两个字段存在则更新,如果不存在则插入(MySQL)

    这不是 精确 复制这个问题 https stackoverflow com questions 4205181 insert to table or update if exists mysql所以我开始了一个新的 我有这个表 ID是主要的
  • mysql 查询多边形内的点 - 没有结果

    我很确定我在这里做错了很多事情 但我不确定是什么 该表 减去一些字段 CREATE TABLE IF NOT EXISTS stuff id int 10 unsigned NOT NULL AUTO INCREMENT lat decim
  • 为什么 MYSQL DB 在对 Django models.DateTimeField 求平均值时返回损坏的值?

    我正在 MySQL 实际上是 MariaDB 数据库上运行 Django 应用程序 我的 Django 模型如下所示 from django db import models from django db models import Avg
  • 我需要异常排序 mysql 结果

    我正在尝试从当前日期开始对结果进行升序排序 这就是我现在使用的 SELECT FROM friends JOIN bdays ON bdays user friends friendname WHERE username userid OR
  • Python Mysql 连接器未获取新内容

    我制作了一个简单的 python 脚本 它每 x 秒检查一次 mysql 表并将结果打印到控制台 我使用 MySQL 连接器驱动程序 但是 运行脚本仅打印初始值 我的意思是 如果我在脚本运行时更改数据库中的值 脚本不会注册它 并且它会继续写
  • 如何搜索包含表情符号的文本?

    我们有一个 MySQL InnoDB 表 带有一个文本字段COLLATE utf8mb4 unicode ci 我需要搜索包含任何表情符号字符的行 我搜索了相当多的问题 但人们似乎有一个他们正在搜索的表情符号列表 我实际上正在寻找一种可以找
  • Laravel updateOrCreate 带有自动增量数据库

    我的目的是如果值存在则更新 否则插入新行提交表单后在数据库表中 问题是 这里的函数添加新列在数据库表中而不是更新它们 这是我的功能 MyModel updateOrCreate array myField gt myValue gt whe
  • 使用日期作为窗口函数实现 RANGE

    从 SQLAlchemy 1 4 25 开始 没有内置支持 所以我尝试使用该解决方案here https stackoverflow com a 69606048 11277108 这是我的复制 from datetime import d

随机推荐

  • 2018.09.18 atcoder Best Representation(kmp)

    传送门 思路简单不知为何调试了很久 显然要么分成n个 所有字符相同 要么分成1个 原字符串无循环节 要么分成两个 有长度至少为2的循环节 一开始以为可以直接hash搞定 后来wa了几次之后发现可以轻松举出反例于是弃了hash kmp大法好啊
  • 毕业设计 - 基于单片机的MP3设计与实现

    文章目录 1 简介 2 主要器件 3 实现效果 4 设计原理 核心算法 音频解码流程 5 部分实现代码 6 最后 1 简介 Hi 大家好 今天向大家介绍一个学长做的单片机项目 基于单片机的MP3设计与实现 大家可用于 课程设计 或 毕业设计
  • 软件工程技术--第四章 概要设计

    第四章 概要设计 4 1 软件设计概述 4 1 1 软件设计的概念与重要性 软件设计是软件工程的重要阶段 是一个将软件需求转换为软件表示的过程 软件设计的基本目标是用比较抽象概括的方式确定目标系统如何完成预定的任务 即确定系统的物理模型 解
  • EXCEL 数字统一转换成文本

    将excel中的数字统一转换成文本形式 即添加 1 点击数据 分列 2 分隔符号 下一步 3 选择文本识别符号 如 分号 4 选中文本 完成 转载于 https www cnblogs com vicdream p 4604012 html
  • 合宙 ESP32C3 使用micropython 驱动配套0.96寸 TFT ST7735 屏幕显示色块和文字

    合宙的esp32c3 开发板配套了0 96寸屏幕驱动板 可直接使用如下链接的代码 注意替换对应的pin脚和st7735 py文件 1 想显示色块参考如下链接 链接 合宙esp32c3 合宙air101LCD屏幕跑通microPython 2
  • hbase面试题(6)

    1 HBase来源于哪篇博文 C BigTable 2 下面对HBase的描述哪些是正确的 B C D B 是面向列的 C 是分布式的 D 是一种NoSQL数据库 3 HBase依靠 存储底层数据 A A HDFS B Hadoop C M
  • SAR目标检测数据集汇总

    SAR目标检测数据集汇总 文章目录 SAR目标检测数据集汇总 1 MSTAR 1996 2 OpenSARShip2 0 2017 3 SSDD SSDD 2020 4 AIR SARShip2 0 2019 5 SAR Ship Data
  • VScode调试php文件(详细且简单易操作)

    之前也不懂 看了网上好多帖子 按照它们步骤操作一遍之后 还是不行 头都大了 现在懂了 原来几步就搞定了 被它们搞得这么复杂 又是配置这个文件 又是配置那个文件 1 下载XAMPP Download XAMPP apachefriends o
  • Java程序员面试常问试题大全

    Java程序员面试常问试题大全 1 面向对象的特征有哪些方面 1 抽象 抽象就是忽略一个主题中与当前目标无关的那些方面 以便更充分地注意与当前目标有关的方面 抽象并不打算了解全部问题 而只是选择其中的一部分 暂时不用部分细节 抽象包括两个方
  • 详解 cryptogen 的内容和配置

    目录 1 cryptogen 模块命令说明 2 cryptogen 模块的配置文件 3 cryptogen 实例 创建测试配置文件 4 Fabric 证书文件的结构 cryptogen 模块主要用来生成组织结构和账号相关的文件 任何 Fab
  • 【react】实现数据双向绑定之不用柯里化的方式

    直接给onChange事件绑定一个箭头函数 这个箭头函数的参数就是event 在箭头函数内再调用saveFormData方法 saveFormData方法里面this setState dataType value
  • 学Python该看什么书?12本精华好书推荐!

    为了让更多想通过看书来学习Python的人能够把时间花在刀刃上 小编总结了Python目前所有热门方向上我个人觉得性价比很高 值得一看的书籍 今天小编来分享给大家 一 Python新手入门 新手学Python的话我推荐这本 Python编程
  • java:面向对象(多态中成员的特点)。

    这次我们说说多态中成员的特点 我们写这样一个代码 class Fu void method1 System out println fu method1 void method2 System out println fu method 2
  • 秒解小米bl锁 无需等待时间_小米全新系统曝光:小米9推送Android Q体验版

    点击上方蓝字订阅每日最新国产手机资讯 对于米粉来说 MIUI系统是他们坚持使用小米手机的重要原因 就在今天上午 MIUI官方微博发布消息 小米9的MIUI Android Q Beta优先体验版现已推送 已获得测试资格的朋友可以升级体验 据
  • 大厂笔试真题

    1 复数相乘 2 K个一组翻转链表 include
  • 浅谈 Python中if __name__ == ‘__main__‘:的工作原理

    为了理解if name main 的工作原理 我们需要先了解Python中的特殊变量 name 每个Python模块都有一个内置的变量 name 这个变量的值取决于如何执行模块 如果模块是被直接运行的 例如 你使用命令python mysc
  • 「网络安全」如何搭建MySQL恶意服务器读取文件?

    前言 注 本文不涉及对MySQL协议报文研究 仅讲解原理 并且做部分演示 搭建MySQL恶意服务器读取文件这件事 虽然直接利用门槛较高 但是由于在网上看到了一种比较新颖的利用方式 利用社会工程学引诱用户连接MySQL进而读取用户文件 个人觉
  • Day【4】字符串解码

    原题链接 思路 对于字符串k encoding 对于这样的形式 我们要加encoding重复k次 从左向右扫描字符串 如果说遇见字符 就直接将该字符添加到结果中 如果说 遇见 k encoding 的形式 我们首先要做的是就是将k和enco
  • GCC参数详解

    gcc and g 分别是gnu的c c 编译器 gcc g 在执行编译工作的时候 总共需要4步 1 预处理 生成 i的文件 预处理器cpp 2 将预处理后的文件不转换成汇编语言 生成文件 s 编译器egcs 3 有汇编变为目标代码 机器代
  • 9.OB4.0调用存储过程通过临时表返回多行记录

    MYSQL存储过程返回多行 1 表数据准备 drop table if exists t1 drop table if exists t2 drop table if exists t3 create table t1 id varchar