mysql 存储过程返回的问题 
表名为 url_list 结构如下
--+sp_name+-----+url+-------+rank+----
--|    0  |---|www.xxx.com |  1  | 
--|    0  |---|www.yyy.com |  1  | 
--|    0  |---|www.zzz.com |  1  | 
--|    1  |---|www.aaa.com |  1  | 
--|    0  |---|www.hhh.com |  1  | 想通过存储过程实现 查询 url_list表中sp_name=0的字段并返回 其rank字段的的值与url字段的值  同时再把其sp_name更新为1

解决方案 »

  1.   

    CREATE PROCEDURE simpleproc ()
    BEGIN
      SELECT rank,url FROM url_list where sp_name=0;
      update url_list set sp_name=1 where sp_name=0;
    END//
      

  2.   

    ACMAIN_CHM 我的想法是 调用一次过程 只显示与更新一条记录啊
      

  3.   

    CREATE PROCEDURE simpleproc ()
    BEGIN
      SELECT rank,url FROM url_list where sp_name=0 limit 1;
      update url_list set sp_name=1 where sp_name=0 limit 1;
    END//
      

  4.   

            cmd = new MySQLCommand("simpleproc", conn); 
                cmd.CommandType = CommandType.StoredProcedure;
                da = new MySQLDataAdapter();
                da.SelectCommand = cmd;
    调用存储过程simplepro为什么不对呢
      

  5.   

    cmd = new MySQLCommand("call simpleproc", conn);
      

  6.   

    DELIMITER //CREATE PROCEDURE simpleproc ()
    BEGIN
       SELECT rank,url FROM url_list where sp_name=0 limit 1;
       update url_list set sp_name=1 where sp_name=0 limit 1;
    END//DELIMITER ;CALL simpleproc();
      

  7.   

    SELECT rank,url FROM url_list where sp_name=0 limit 1;
    能不能从中读取出一个URL 再把这个URL带到下面来进行条件查找更新啊
      update url_list set sp_name=1 where URL=url 
      

  8.   

    可以的,方法很多
    你可以在存储过程中声明局部变量,然后用游标把读的url赋给临时变量,在下一个语句里面可以用到这个变量。
      

  9.   

    给个示例吧,_uId是传入的参数,ret是返回值,
    count是局部变量,应该你需要的示例都有了定义的示例01  DELIMITER ##
    02  CREATE PROCEDURE procIsSleepUser(IN _uId INT,OUT RET VARCHAR(20))
    03  BEGIN
    04    DECLARE count INT;
    05    SELECT COUNT(topicId) INTO count FROM tbl_topic WHERE uId=_uId;
    06    IF count>0 THEN
    07      SET RET='活跃用户';
    08    ELSE
    09      SET RET='休眠用户';  
    10    END IF;
    11  END ##
    12  DELIMITER ;调用的示例
    CALL procIsSleepUser(5,@RET);
    SELECT @RET;