我想存储过程中取出一个表的某行中的某个数据,然后打印
drop procedure if exists random;
create procedure random(in num int)
begin
   declare nname char(20);
   SET @sql = CONCAT('select course.name into nname from course
   where course.term = "第三年第二学期"
   limit ',ceil (num+1),',1;');
PREPARE stmt FROM @sql;
        EXECUTE stmt;
   select nname;end
现在的问题在于,我无法给nname赋值。

解决方案 »

  1.   

    不用动态drop procedure if exists random;
    create procedure random(in num int)
    begin
      declare nname char(20);select course.name into nname from course   
    where course.term = "第三年第二学期"   
    limit ceil(num+1),1;select nname;end
      

  2.   

    create procedure random(in num int)
    begin
      declare nname char(20);
      SET @sql = CONCAT('select course.name into @nname from course
      where course.term = "第三年第二学期"
      limit ',ceil (num+1),',1;');
    PREPARE stmt FROM @sql;
           EXECUTE stmt;
      select @nname;end
      

  3.   

    create procedure random(in num int)
    begin
        declare @nname char(20)
    set @sql=concat('select course.name into @name from course
    where course.term="第三年第二学期“
    limit',ceil(num+1),',1;');
    prepare stmt from @sql
    execute stmt;
    end