网上的都是一些静态的,用CASE WHEN结构实现。所以我写了一个动态的。
SP 代码:
DELIMITER $$
DROP
PROCEDURE IF EXISTS `test`
.
`sp_row_column_wrap`
$
$
CREATE
DEFINER=
`root`
@
`localhost`
PROCEDURE `sp_row_column_wrap`
(
IN
$schema_name varchar
(
64)
,
IN
$table_name varchar
(
64)
)
BEGIN
declare cnt int
(
11)
;
declare $table_rows int
(
11)
;
declare i int
(
11)
;
declare j int
(
11)
;
declare s int
(
11)
;
declare str varchar
(
255)
;
-- Get the column number of the table
select
count
(
1)
from
information_schema.
columns where
table_schema=
$
schema_name and
table_name=
$
table_name into
cnt;
-- Get the row number of the table
select
table_rows from
information_schema.
tables where
table_schema =
$schema_name and
table_name=
$
table_name into
$table_rows;
-- Check whether the table exists or not
drop
table
if exists test.
temp;
create
table
if not
exists test.
temp (
`1`
varchar
(
255)
not
null
)
;
-- loop1 start
set
i =
0;
loop1:loop
if i =
$table_rows-1 then
leave loop1;
end
if;
set
@
stmt1
=
concat
(
'alter table test.temp add `'
,
i+
2,
'` varchar(255) not null'
)
;
prepare s1 from
@
stmt1
;
execute s1;
deallocate prepare s1;
set @stmt1 = '';
set
i =
i +
1;
end
loop loop1;
-- loop1 end;
set
s =
0;
-- loop2 start
loop2:loop
-- leave loop2
if s=
cnt then
leave loop2;
end
if;
set
@
stmt2
=
concat
(
'select column_name from information_schema.columns where table_schema="'
,
$
schema_name,
'" and table_name="'
,
$
table_name,
'" limit '
,
s,
',1 into @temp;'
)
;
prepare s2 from
@
stmt2
;
execute s2;
deallocate prepare s2;
set @stmt2 = '';
set
j=
0;
set
str =
' select '
;
-- Loop3 start
loop3:loop
if j =
$table_rows then
leave loop3;
end
if;
set
@
stmt3
=
concat
(
'select '
,
@
temp
,
' from '
,
$
schema_name,
'.'
,
$
table_name,
' limit '
,
j,
',1 into @temp2;'
)
;
prepare s3 from
@
stmt3
;
execute s3;
set
str =
concat
(
str,
'"'
,
@
temp2
,
'"'
,
','
)
;
deallocate prepare s3;
set @stmt3 = '';
set
j =
j+
1;
end
loop loop3;
set
str =
left
(
str,
length
(
str)
-
1)
;
-- insert new data into table
set
@
stmt4
=
concat
(
'insert into test.temp'
,
str,
';'
)
;
prepare s4 from
@
stmt4
;
execute s4;
deallocate prepare s4;
set @stmt4 = '';
set
s=
s+
1;
end
loop loop2;
END
$
$
DELIMITER ;
以下是测试结果:
======
select * from a;
select * from b;
select * from salary;
call sp_row_column_wrap('test','a');
select * from test.temp;
call sp_row_column_wrap('test','b');
select * from test.temp;
call sp_row_column_wrap('test','salary');
select * from test.temp;
query result(2 records)
query result(3 records)
bid |
aid |
image |
time |
1 |
2 |
1.gif |
2007-08-08 |
2 |
2 |
2.gif |
2007-08-09 |
3 |
2 |
3.gif |
2007-08-08 |
query result(7 records)
id |
cost |
des |
Autoid |
1 |
10 |
aaaa |
1 |
1 |
15 |
bbbb |
2 |
1 |
20 |
cccc |
3 |
2 |
80 |
aaaa |
4 |
2 |
100 |
bbbb |
5 |
2 |
60 |
dddd |
6 |
3 |
500 |
dddd |
7 |
query result(2 records)
query result(4 records)
1 |
2 |
3 |
1 |
2 |
3 |
2 |
2 |
2 |
1.gif |
2.gif |
3.gif |
2007-08-08 |
2007-08-09 |
2007-08-08 |
query result(4 records)
1 |
2 |
3 |
4 |
5 |
6 |
7 |
1 |
1 |
1 |
2 |
2 |
2 |
3 |
10 |
15 |
20 |
80 |
100 |
60 |
500 |
aaaa |
bbbb |
cccc |
aaaa |
bbbb |
dddd |
dddd |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
分享到:
相关推荐
本文将围绕"zhuang_jdk_jre_jse7.7z"这个压缩包文件,详细解析其中包含的Java开发工具包(JDK)与Java运行环境(JRE)的7u80版本,以及它们在Java生态系统中的重要角色。 1. JDK 7u80:Java Development Kit JDK...
从给定的文件标题“mysql5.5详解”和描述“MySQL 5.5新特性详解及参数优化,好资料!!!!”,我们可以深入探讨MySQL 5.5版本中引入的重要特性和性能优化策略。 ### MySQL 5.5新特性 #### 1. **InnoDB作为默认...
### AN ZHUANG DAYIN JI - 鬼影系统安装打印机解决方案 #### 知识点一:Ghost操作系统概述 - **定义与特点**:Ghost(General Hardware-Oriented System Transfer)是一种常用的系统备份和恢复工具,常用于快速...
本资源“an-jian-zhuang-tai-ji.zip_JIAN”提供了一个按键状态机函数的代码实现,旨在解决这个问题,确保软件在处理按键输入时能够准确无误。 按键抖动是由于按键按下或释放时,接触点瞬间的不稳定造成的。在物理上...
SGM358L ROLLER HINGE LWR ce liang gong zhuang 2024.04.30 _1.stp
介绍:天地图.深圳平台,发布了深圳市的多套基础数据。数据的精度和质量都非常高。平台包含了深圳市超过60万的建筑物数据,数据的质量非常高,不仅包含了建筑的foot
CRC3/MBUS,常用于SPI通讯数据校验,有效位3位。如美信MAX20092就用此方法。该算法适用于各种多项式(CRC3)根据多项式不同要进行变化,如有问题可以发邮箱到Larry_Zhuang@163.com,或者留言给我。
描述中的"mysql biaoge zhuang execl"可以理解为“MySQL表格转Excel”。 以下是对这个主题的详细阐述: 1. **Python数据库连接**: - `pymysql`:Python中常用的MySQL数据库连接库,可以用来执行SQL查询、获取...
IAI安装软件,好像是日文版。安装时可以选择语言! 内有日文,英文和中文!
包含如下操作系统版本 FreeBSD Linux Solaris Windows 分别对应如下目录 MegaCLI for DOS MegaCLI for Linux MegaCLI for Solaris MegaCLI for FreeBSD MegaCLI for Windows ********************************...
《基于Java Swing&Mysql的图书管理系统》是一款使用Java编程语言中的Swing图形用户界面库,结合MySQL数据库系统开发的图书管理软件。这个项目旨在提供一个高效、易用且功能丰富的图书管理解决方案,对于学习Java GUI...
文章开始时指出,此效果是作者在浏览网页时发现的一种有趣的动态效果,遂决定自己动手实现它。接下来,文章提供了HTML、CSS和JavaScript代码,以及实现该效果所需的步骤和注意事项。 首先,HTML部分使用了`<div>`...
解决各种版本ansys安装问题,包括证书错误,打开后出现“The Ansys Flexm license manager service is not instaned"等问题
【标题】"assignment-2-michelle-zhuang" 是一个在GitHub Classroom平台上创建的作业项目,由学生或用户Michelle Zhuang完成。这个项目可能是针对编程课程中的第二部分任务,通常涉及特定的技术主题和编程练习。 ...
### 如何成为Layout高手 #### 一、工具与技能 要成为一名Layout高手,首先需要熟练掌握先进的EDA(电子设计自动化)工具。当前业界普遍使用的工具包括Allegro、WG(通常指的是Cadence OrCAD Capture/Cadence ...
比较新的图像多特征提取方法研究,博士论文。
麒麟平台向日葵 dpkg --info ./sunloginclient-10.0.2.24779_kylin_arm64.deb | grep Depends Depends: libwebkit2gtk-4.0-37 依赖包: su apt install libwebkit2gtk-4.0-37
chang ge zhuang cun ;常各庄村, chang he da sha ;长和大厦,长河大厦, 使用方法(Linux下): 1.编译:gcc dis_sogo_cell.c -o dis_sogo_cell 或直接make 2.使用:./dis_sogo_cell sogo_scel_file.scel > sogo_...
title: gdb调试初探用GDB调试程序(一)陈皓在这篇文章中概略地介绍了gdb的使用方法,总的来说有如下几步使用gcc的-g参数编译文件,是目标文件中带有