存储过程中的sql
下面的存储过程中的sql为什么单独可以执行,放到存储过程里面就不能执行了?
--创建表
create table demo(id int,name varchar(20),quarter int,nums int,amunt_sold decimal(8,2));
insert into demo values(1, 'a',1, 1000,200);
insert into demo values(2, 'a',2, 2000,100.12);
insert into demo values(3, 'a',3, 4000,156);
insert into demo values(4, 'b',1, 5000,234);
insert into demo values(5, 'b',3, 3000,345);
insert into demo values(6, 'c',3, 3500,222);
insert into demo values(7, 'd',1, 4200,111);
insert into demo values(8, 'd',2, 5500,555);
--创建存储过程
DROP PROCEDURE IF EXISTS mtest;
create procedure mtest()
RETURNS set(row(x varchar(8000),a varchar(8000),b varchar(8000),c varchar(8000),d varchar(8000)) NOT null);
define sql2 set(row(x varchar(8000),a varchar(8000),b varchar(8000),c varchar(8000),d varchar(8000)) NOT null);
INSERT INTO table(sql2)
select * from (select name,nums,id from demo)
PIVOT (sum(nums) for name
in('a','b','c','d'));
RETURN sql2;
END PROCEDURE;
--调用
CALL mtest();
评论
改小点吧。看着用varchar(2000)就好了。
热门帖子
- 12025-12-01浏览数:182764
- 22023-05-09浏览数:25062
- 42023-09-25浏览数:18526
- 52020-05-11浏览数:17529