解决方案 »

  1.   

    这个建议楼主先参考一下MYSQL的手册中的存储过程语法和例子,尝试自己亲自写一下。然后有具体问题可以将自己写的代码和错误信息一同贴出进行讨论。
      

  2.   

    create procedure paillierSum(IN table_name varchar(64), IN column_name varchar(64),OUT column_sum varchar(512))BEGIN       DECLARE Done INT DEFAULT 0;       DECLARE MultiplyValue VARCHAR(512) DEFAULT '1';       DECLARE tempValue VARCHAR(512);
          
           
           /* 声明游标 */
           DECLARE rs CURSOR FOR SELECT column_name FROM table_name;
           /* 异常处理 */
          DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET Done = 1;
         
    declare i int;
    declare a int;      /* 打开游标 */
          OPEN rs;  
         
          /* 逐个取出当前记录column_name字段的值s */
          FETCH NEXT FROM rs INTO tempValue;     
          /* 遍历数据表 */
          REPEAT
                IF NOT Done THEN
                      set a=1;
       set i=0;
       while i<tempValue.length do
             a=tempValue.substring(i,i+1);
            set i=i+1;
        end while;
        
                   /* 如果更新后灵气值大于允许的最大值,则就设置为最大值 */
                  /* IF CurrentLingQi >= 1800 THEN
                      UPDATE socialrelation SET LingQi = 1800 WHERE NodeName = ShizuName;
                  ELSE*/
                  /* 否则,正常更新 */
                      /*UPDATE socialrelation SET LingQi = LingQi + 60 WHERE NodeName = ShizuName;
                   END IF;
           */
                END IF;
               
          FETCH NEXT FROM rs INTO tempValue;
     
          UNTIL Done END REPEAT;
         
          /* 关闭游标 */
          CLOSE rs;
     END
    我写了大概,然后就不知道该怎么写了
      

  3.   

    我写了大概,不知道怎么把字符转成数字,并保存成int[]数组create procedure paillierSum(IN table_name varchar(64), IN column_name varchar(64),OUT column_sum varchar(512))BEGIN       DECLARE Done INT DEFAULT 0;       DECLARE MultiplyValue VARCHAR(512) DEFAULT '1';       DECLARE tempValue VARCHAR(512);
          
           
           /* 声明游标 */
           DECLARE rs CURSOR FOR SELECT column_name FROM table_name;
           /* 异常处理 */
          DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET Done = 1;
         
    declare i int;
    declare a int;      /* 打开游标 */
          OPEN rs;  
         
          /* 逐个取出当前记录column_name字段的值s */
          FETCH NEXT FROM rs INTO tempValue;     
          /* 遍历数据表 */
          REPEAT
                IF NOT Done THEN
                      set a=1;
       set i=0;
       while i<tempValue.length do
             a=tempValue.substring(i,i+1);
            set i=i+1;
        end while;
                    END IF;
               
          FETCH NEXT FROM rs INTO tempValue;
     
          UNTIL Done END REPEAT;
         
          /* 关闭游标 */
          CLOSE rs;
     END