mysql里创建的存储过程请问下这里是哪里错了?
createorREPLACEPROCEDUREgetUserlist()BEGINselect*fromuser;end;...
create or REPLACE PROCEDURE getUserlist()
BEGIN
select * from user;
end; 展开
BEGIN
select * from user;
end; 展开
4个回答
展开全部
or REPLACE 不能用,这个是oracle才有的,mysql没有这个语法
追问
好像是这个问题 ,今天第一次学Mysql 我装的1.0版本的 你觉得应该装什么版本的才好 啊,本来想下最新版本的 是测试版的没下 还有就是我用oraclexe去调用存储过程的时候也出现了问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我记得 begin 后面好像不能直接跟 sql语句
更多追问追答
追问
那 你能不能给我写个正确的啊
追答
CREATE PROCEDURE `proc`(SourceDBName CHAR(50), SourceTableName CHAR(50),
TargetDBName CHAR(50), TargetTemplateTableName CHAR(50))
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE FieldValue CHAR(50);
DECLARE CursorSegment CURSOR FOR SELECT ... FROM SourceDBName.SourceTableName;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
OPEN CursorSegment;
REPEAT
FETCH CursorSegment INTO FieldValue;
IF NOT done THEN
...
END IF;
UNTIL done END REPEAT;
CLOSE CursorSegment;
END$$
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
报什么错误?你这个格式没什么错误。
更多追问追答
追问
能帮我写个在mysql里面的存储过程吗 谢了
追答
CREATE PROCEDURE `undobusiness`()
BEGIN
DECLARE business_date timestamp default current_timestamp;
DECLARE no_more_gbmes int;
DECLARE mon int;
DECLARE gid int;
DECLARE gbid int;
DECLARE accountid int;
DECLARE bsid int;
DECLARE gbmes_csr CURSOR FOR SELECT g_id,gb_id,account_id,bs_id FROM jz_gbmes;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET no_more_gbmes=1;
SELECT max(plandate) into business_date from jz_business_plan;
SET no_more_gbmes=0;
set mon = DATE_FORMAT(business_date,'%m');
WHILE (mon < DATE_FORMAT(Now(),'%m')) do
OPEN gbmes_csr;
REPEAT
FETCH gbmes_csr INTO gid,gbid,accountid,bsid;
insert into jz_business_plan(g_id,gb_id,account_id,bs_id) values(gid,gbid,accountid,bsid);
UNTIL no_more_gbmes
END REPEAT;
CLOSE gbmes_csr;
set mon = mon+1;
end WHILE;
END$$
DELIMITER ;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询