MySql存储过程参数问题

yhy1987 2009-02-05 03:57:22
存储过程返回的值是一行一行的,但每行又不是某个表的所有数据,可能是两个表的某些数据,想把数据一条一条的存放返回,该怎么弄啊!
DELIMITER $$;
DROP PROCEDURE IF EXISTS `mydata`.`GETROWNUM`$$
CREATE PROCEDURE `mydata`.`GETROWNUM` ()
BEGIN
declare mycount int;
set @mycount=0;
select (@mycount:=@mycount+1) as rownum,t01.* from t01 where t01.unitid='A1A10A1';
END$$
DELIMITER ;$$
就这个存储过程想把查询结果返回,那个返回的参数怎么写?
...全文
547 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
anonymous__ 2009-03-17
  • 打赏
  • 举报
回复
DROP PROCEDURE IF EXISTS genseq ;

CREATE PROCEDURE genseq
( IN v_seqtype VARCHAR(2),
OUT v_seqence VARCHAR(30)
)
/*
标识类:
位置(点)标识:1(业务区代码)+1(P)+4(yymm)+8(流水号)
区域标识:1(业务区代码)+1(L)+4(yymm)+8(流水号)
日志/代办标识:1(业务区代码)+1(B)+4(yymm)+8(流水号)
计划标识:1(业务区代码)+1(S)+4(yymm)+8(流水号)
网格系统客户标识:1(业务区代码)+1(D)+4(yymm)+8(流水号)
网格系统集团/个人客户标识:1(业务区代码)+1(C)+4(yymm)+9(流水号)
组织节点代码(组织结构):采用分级编码。
操作员Id(客户经理):操作员工号:6(节点代码)+3(流水号)
6位节点代码的含义:1(业务区C)+1(营业区)+1(营销单位)+3(营业厅)
代码规则在每个表中规定
流水类:
业务流水号:8(YYYYMMDD)+6(HHMISS)+9(流水号)+2(业务类型)+1(业务区代码)
业务类型:
位置(点)类PT
区域类LT
日志/代办类LG
计划类SD
预警类WN
网格系统客户类CT
*/
BEGIN_PROC:
BEGIN
DECLARE v_seqkind CHAR(1); /*流水类型*/
DECLARE v_currval DECIMAL(14,0); /*表中当前值*/
DECLARE v_vallen INT ; /*最大长度*/
DECLARE v_recursive CHAR(1); /*是否重复*/
/**/
DECLARE v_currval1 DECIMAL(14,0); /*增1后流水值 数*/
DECLARE v_currval1S VARCHAR(30); /*增1后流水值 串*/
DECLARE v_tmpseq VARCHAR(30); /*临时流水*/
DECLARE v_maxval VARCHAR(14); /*最大流水值 串*/
DECLARE v_maxvald DECIMAL(14,0); /*最大流水值 数*/
DECLARE v_currtime VARCHAR(30); /*当前时间 串*/
DECLARE v_currym CHAR(4); /*当前年月串*/

SET v_seqtype =TRIM(v_seqtype);
SELECT
seqkind AS v_seqkind,
currval AS v_currval,
vallen AS v_val_len,
recursive AS v_recursive
FROM seqinfo WHERE TRIM(seqtype) = v_seqtype ;

/*1--没有流水类型错误*/
IF (v_seqkind IS NULL) THEN
SELECT 1 AS ErrorCode;
LEAVE BEGIN_PROC;
END IF;

/*计算最大序号*/
SET v_maxval = '';

WHILE LENGTH(v_maxval)<v_vallen do
SET v_maxval=CONCAT(v_maxval,'9');
/*set v_currym =''; */
END WHILE ;

SET v_maxvald =CONVERT(v_maxval,DECIMAL(14,0));

SET v_currval1=v_currval+1;
IF (v_currval1 > v_maxvald) THEN
IF (recursive = '1') THEN
SET v_currval1 = 1;
ELSE
/*2--流水溢出错误*/
SELECT 2 AS ErrorCode;
LEAVE BEGIN_PROC;
END IF;
END IF;

/*将流水转换成字符串*/
SET v_currval1S = TRIM(CONVERT(v_currval1,CHAR(30)));


WHILE LENGTH(v_currval1S)<v_vallen DO
SET v_currval1S = CONCAT('0',v_currval1S);
END WHILE ;

/*取当期时间串*/
SELECT DATE_FORMAT(sysdate(), '%Y%m%d%H%i%s') AS v_currtime;
SET v_currym=SUBSTR(v_currtime,3,4);

/*开始拼流水号*/
IF (v_seqkind = '1') THEN
SET v_seqence=CONCAT('C',v_seqtype,v_currym,v_currval1S);
ELSE
SET v_seqence=CONCAT(v_currtime,v_currval1S,v_seqtype,'C');
END IF;

SELECT 0 AS ErrorCode;

END BEGIN_PROC
yhy1987 2009-02-16
  • 打赏
  • 举报
回复
不用存储过程也能解决问题,就先不管了吧!
老哥讲数据库 2009-02-09
  • 打赏
  • 举报
回复
存储过程的返回结果是一个结果集包,里面是若干个结果集.
每个SELECT语句都会得到一个结果集,之后将所有的结果集作成包返回.
若你的结果是多条记录的话,其实已经是一个包了.
dragonfly001 2009-02-06
  • 打赏
  • 举报
回复
为什么要一条一条的返回呢,你可以一次返回到datatable里面,一条一条的读取啊,或者一下放到数据库一个零时表里,一条一条的读取啊。
本课程是SQL系列课程第2篇:MySQL数据库。MySQL篇    MySQL数据库管理系统安装        10.1 MySQL概述            10.1.1 MySQL主要特点            10.1.2 MySQL主要版本         10.2 MySQL数据库安装和配置            10.2.1 Windows平台安装MySQL                1.下载MySQL8.0社区版                2.安装MySQL8.0社区版            10.2.2 Linux平台安装MySQL                1.更新软件仓库包索引                2.安装 MySQL                3.防火墙设置                4.启动 MySQL 服务                5.配置远程登录            10.2.3 macOS平台安装MySQL                1.下载MySQL8.0社区版                2.安装 MySQL    MySQL数据库管理系统日常管理        11.1 登录服务器        11.2 常见的管理命令            11.2.1 帮助命令            11.2.2 退出命令            11.2.3 数据库管理            11.2.4 用户管理        11.3 查看系统对象信息            11.3.1 查看有哪些库            11.3.2 查看有哪些表            11.3.3 查看表结构        11.4 执行脚本文件            11.4.1 不需要登录MySQL方式            11.4.2 需要登录MySQL方式        11.5 数据库备份与恢复            11.5.1 备份数据库            11.5.2 恢复数据库            11.5.3 实例:在Windows下备份到Linux下恢复        11.6 MySQL图形界面管理工具            11.6.1 下载和安装MySQL Workbench            11.6.2 配置连接数据库            11.6.3 管理数据库            11.6.4 管理表            11.6.5 执行SQL语句    MySQL中特有的SQL语句        12.1 自增长字段        12.2 MySQL日期相关数据类型        12.3 限制返回行数        12.4 常用函数            12.4.1 数字型函数            12.4.2 字符串函数            12.4.3 日期和时间函数    MySQL数据库开发        13.1 存储过程            13.1.1 使用存储过程重构“找出所有销售部所有员工信息”案例            13.1.2 调用存储过程            13.1.3 删除储过程        13.2 存储过程参数            13.2.1 IN参数            13.2.2 OUT参数            13.2.3 INOUT参数        13.3 存储函数            13.3.1 创建存储函数            13.3.2 调用存储函数            13.3.3 删除存储函数        13.4 触发器            13.4.1 触发器分类            13.4.2 创建触发器语法            13.4.3 使用NEW和OLD修饰符            13.4.4 示例:员工表操作更新日志            13.4.5 测试触发器

56,678

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧