use javaee;
delimiter //
create procedure SystemMessage (in message text)
begin
DECLARE senderID  int;
DECLARE receiverID int;
DECLARE receiverType  bit(1);
DECLARE postTime  Date; set senderID =0;
set receiverType=0;
set postTime = date(now()); DECLARE cur1 CURSOR FOR SELECT * FROM javaee.personinfo; open cursor_person; while fetch cursor_person into receiverID do insert into messageinfo(SenderID,ReceiverID,ReceiverType,PostTime,Content)
values(senderID,receiverID,receiverType,postTime,text); end while;

close cursor_person; set receiverType =1; open cursor_enterprise;
while fetch cursor_person into receiverID do insert into messageinfo(SenderID,ReceiverID,ReceiverType,PostTime,Content)
values(senderID,receiverID,receiverType,postTime,text); end while;

close cursor_enterprise;
 

end;
//
delimiter 
错误提示:ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'DECLA
RE cur1 CURSOR FOR SELECT * FROM javaee.personinfo;        open cursor_person' at line 12

解决方案 »

  1.   

    DECLARE必须放在其它语句之前。改成如下。delimiter //
    create procedure SystemMessage (in message text)
    begin
    DECLARE senderID  int;
    DECLARE receiverID int;
    DECLARE receiverType  bit(1);
    DECLARE postTime  Date; DECLARE cur1 CURSOR FOR SELECT * FROM javaee.personinfo; set senderID =0;
    set receiverType=0;
    set postTime = date(now());
      

  2.   

    果不其然!谢谢啦!MySQL中有一原文如下:DECLARE is allowed only inside a BEGIN ... END compound statement and must be at its start, before any other statements. 
    呵呵!结帖!!!
      

  3.   

    cursor_person;这个游标的定义没有。