delimiter $$
CREATE PROCEDURE `bools`(in ming varchar(20) , in ada varchar(20))
 BEGIN DECLARE u VARCHAR(20); SELECT book.bkISBN INTO @u FROM book WHERE book.bkName=ming;
 UPDATE book SET bkName=ada WHERE professbook.pbkISBN=@u;
 END$$
delimiter ;

解决方案 »

  1.   

    还是不对..
    比如说我要输入(算法设计,art)
    然后运行提示Procedure execution failed
    1054 - Unknown column '算法设计' in 'field list'可是我book.bkName里确实有'算法设计'这个数据啊
      

  2.   

    SELECT book.bkISBN FROM book WHERE book.bkName='算法设计';
    在MYSQL中运行,是否有结果call bools('算法设计',art)
      

  3.   

    你是如何调用你的语句的?建议给出你完整的 create table ... create procedure ... 语句以供别人调试分析。比如说我要输入(算法设计,art)
    你的字符串常量有没有加 引号?('算法设计',art)
      

  4.   

    declare u,后面用的时候,为什么要用@u?
      

  5.   

    -- UPDATE book SET bkName=ada WHERE professbook.pbkISBN=@u; 
    其中WHERE professbook.pbkISBN=@u; 有问题吧, 你条件想是:WHERE book.bkISBN=@u;?????
      

  6.   

    call bools('算法设计','art');
      

  7.   

    delimiter$$
    create define='root'@'localhost' procedure 'bools'(in ming varchar(20)
    in data varchar(20))O
    begin
    declare u varchar(20)
    select book.bklsbn into@u from book where book.bkname=ming;
    update book set bkname=ada where  proessbook.pbkisbn=@u;end$$
    delimiter;
      

  8.   

    @u表示不声明,直接使用的变量u ,而你前面有使用 declare  定义 u ,两个变量一样吗 ?如果不一样 请换个名字试试看!