mysql的procedure里面,查询语句放在V_SQL变量里面 怎么去执行它,看它返回多少行?
:
set v_sql=" select * from dual";
sql%rowcount?

解决方案 »

  1.   

    用preparemysql> CREATE PROCEDURE curdemo1(IN V_SQL CHAR(100))
        -> BEGIN
        ->
        ->   set @s=V_SQL;
        ->   PREPARE stmt1 FROM @s;
        ->   EXECUTE stmt1 ;
        ->   DEALLOCATE PREPARE stmt1;
        ->   select FOUND_ROWS();
        -> END
        -> //
    Query OK, 0 rows affected (0.00 sec)mysql>
    mysql> delimiter ;
    mysql> call curdemo1('select * from student');
    +----------+--------+------+------+---------+-------------+-------+-
    | id       | name   | sex  | age  | address | phone       | bedid |
    +----------+--------+------+------+---------+-------------+-------+-
    | 91010101 | 丁乙甲 | 男   |   21 | 通化    | 13900000000 |   111 |
    | 91010102 | 索春龙 | 男   |   22 | 安徽    | 13910000000 |     0 |
    | 91010103 | 刘莉莉 | 女   |   22 | 白城    | 13920000000 |     0 |
    | 91010104 | 隋鑫   | 女   |   22 | 松原    | 13930000000 |     0 |
    | 91010105 | 长命   | 男   |   22 | 地府    | 12222222222 |     0 |
    | 91010201 | 河江山 | 男   |   20 | 陕西    | 13800000000 |     0 |
    | 91010202 | 祝立业 | 男   |   20 | 长春    | 13800000000 |     0 |
    ....
    | 91030201 | 王飞   | 男   |   22 | 永安    | 13730060000 |     0 |
    +----------+--------+------+------+---------+-------------+-------+-
    24 rows in set (0.00 sec)+--------------+
    | FOUND_ROWS() |
    +--------------+
    |           24 |
    +--------------+
    1 row in set (0.06 sec)Query OK, 0 rows affected (0.06 sec)mysql>
      

  2.   

    可以在存储过程内部获取FOUND_ROWS() 值赋给输出参数变量,然后外面直接引用存储过程的输出参数即可。
      

  3.   

    sql%rowcount
    这个是oracle的
    mssql的话,可以@@rowcount
      

  4.   

    靠!foolish MySQL爷们是oracle ERP顾问