MYSQL 创建存储,使用游标

zhouixi 2018-09-13 10:58:57

CREATE PROCEDURE mypro(in tablename varchar(10))
BEGIN
declare col_name varchar(100);
declare data_type varchar(100);
declare result varchar(4000);
declare done int ;
set result = '';

declare getcategory cursor for select distinct column_name,data_type from information_schema.COLUMNS where table_name = tableName;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1;
open getcategory;
read_loop: LOOP
fetch getcategory into col_name,data_type;
if done=1 then
leave read_loop; -- 跳出游标循环
end if
begin
IF data_type='bigint' then
set result ='Integer';
elseif data_type='int' then
set result=result+'Integer';
elseif data_type='varchar' then
set result=result+'String';
elseif data_type='char' then
set result=result+'String';
elseif data_type='tinyint' then
set result=result+'String';
elseif data_type='date' then
set result=result+'Date';
elseif data_type='datetime' then
set result=result+'Date';
elseif data_type='enum' then
set result=result+'boolean';
elseif data_type='text' then
set result=result+'String';
elseif data_type='text' then
set result=result+'blob';
END IF;
end
END LOOP read_loop
select result;
end



没看懂哪里的错。MYSQL用的是真的难受
...全文
282 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
mingqing6364 2018-09-15
  • 打赏
  • 举报
回复
mysql要求,存储过程或自定义函数中,声明变量必须在其他语句之前
你有一条变量的声明在set之后了,所以报错
如果需要指定默认值,可以使用:
declare result varchar(4000) DEFAULT '';

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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