本意是想传入表名tbl_name,通过参数row_count传出表记录行数。如下,报变量row_count未定义。mysql> delimiter //
mysql> create procedure p1_test(tbl_name varchar(32),out row_count int)
    -> label_proc:
    -> begin
    -> declare v_sql varchar(200);
    -> set v_sql=concat('select count(*) into row_count from ',tbl_name);
    -> set @sql=v_sql;
    -> prepare s1 from @sql;
    -> execute s1;
    -> deallocate prepare s1;
    -> end label_proc //
Query OK, 0 rows affected (0.03 sec)
mysql> delimiter ;
mysql> set @num=0;
Query OK, 0 rows affected (0.00 sec)mysql> call p1_test('t',@num);
ERROR 1327 (42000): Undeclared variable: row_count
mysql>

解决方案 »

  1.   

    set v_sql=concat('select count(*) into @row_count from ',tbl_name);
    SET row_coun=@row_coun;
      

  2.   

    set v_sql=concat('select count(*) into @row_count from ',tbl_name);
      

  3.   

    mysql> delimiter //
    mysql> create procedure p1_test(tbl_name varchar(32),out row_count int)
        -> label_proc:
        -> begin
        -> declare v_sql varchar(200);
        -> set v_sql=concat('select count(*) into @row_count from ',tbl_name);
        -> set @sql=v_sql;
        -> prepare s1 from @sql;
        -> execute s1;
        -> deallocate prepare s1;
        -> end label_proc //