1.话不多说

BEGIN
	#Routine body goes here...
 
     #定义 变量  
           DECLARE a int;  
           DECLARE b DECIMAL(11,2);  
             
           #此变可有可无,为了给个该存储函数执行成功后给个提示,运行下便知道  
           DECLARE str VARCHAR(300);  
           DECLARE x int;  
             
           #这个用于处理游标到达最后一行的情况  
           DECLARE s int default 0;  
           
           #声明游标cursor_name(cursor_name是个多行结果集)  
          

           DECLARE cursor_name CURSOR FOR select userid,agentmoney from agentlog where  TO_DAYS(ctime)=TO_DAYS(DATE_SUB(CURDATE(),INTERVAL 1 DAY)) and state=0;
             
           #设置一个终止标记   
    
           DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET s=1;  

						
						set @sta = 0;
						SELECT state into @sta from config where id=5;
						#如果为1,每天自动发放佣金,否则不执行执行
						IF @sta > 0 THEN

            set str = "--";  
                #打开游标  
  
  
                OPEN cursor_name;  
                      
                    #获取游标当前指针的记录,读取一行数据并传给变量a,b  
  
  
                    fetch  cursor_name into a,b;  
                    #开始循环,判断是否游标已经到达了最后作为循环条件   
  
  
                    while s <> 1 do  
                            set str =  concat(str,x);  
                            UPDATE agentlog set state=1,updatetime=NOW() where userid=a and  TO_DAYS(ctime)=TO_DAYS(DATE_SUB(CURDATE(),INTERVAL 1 DAY));
														call update_rmb(a,0,b,1,11,'佣金结算');
                            
                            #读取下一行的数据  
  
    
                            fetch  cursor_name into a,b;  
                      
                    end while;  
                   
                 #关闭游标  
  
  
                 CLOSE cursor_name ;  
              
            select str;  
            	END IF;
    #语句执行结束  
END