create procedure tushuluru /*图书录入*/
 @a varchar(20),@b char(4),@c char(8),@d int,@e varchar(20),@f varchar(20),@g char(5)
as 
insert  into book(b_name,b_id,b_writer,b_num,b_publisher,b_class,b_class_id)
values('@a','@b','@c','@d','@e','@f','@g')
goexec tushuluru @a='DELPHI',@b='0007',@c='YYL',@d=5,@e='xxxx',@f='中级',@g='007',@h='50'create table book
(
 b_name       varchar(20),
 b_id         char(4) primary key,
 b_writer     char(8),
 b_num        int,
 b_publisher  varchar(20),
 b_class      varchar(20),
 b_class_id   char(5),
 b_prise      float,
 b_comment    varchar(20),
)
在做一个插入图书信息的存储过称。
执行存储过程时提示为过程或函数 tushuluru 指定的参数太多,我不是很懂,请大家指点一下。

解决方案 »

  1.   

    存储过程参数没有@h, 你调用的时候多了最后一个参数
    exec tushuluru @a='DELPHI',@b='0007',@c='YYL',@d=5,@e='xxxx',@f='中级',@g='007'
    必须一一对应的
    另外你执行的时候可以不用指定参数变量
    exec tushuluru 'DELPHI','0007','YYL',5,'xxxx','中级','007'
      

  2.   

    create procedure tushuluru /*图书录入*/
     @a varchar(20),@b char(4),@c char(8),@d int,@e varchar(20),@f varchar(20),@g char(5)
    as  
    insert into book(b_name,b_id,b_writer,b_num,b_publisher,b_class,b_class_id)
    values('@a','@b','@c','@d','@e','@f','@g')
    goexec tushuluru 'DELPHI','0007','YYL',5,'xxxx','中级','007'你调用时多了一个参数@h
      

  3.   

    谢谢大家,干才是写错了,现在改了一下
    create procedure tushuluru /*图书录入*/
     @a varchar(20),@b char(4),@c char(8),@d int,@e varchar(20),@f varchar(20),@g char(5),@h float
    as  
    insert into book(b_name,b_id,b_writer,b_num,b_publisher,b_class,b_class_id,b_prise)
    values('@a','@b','@c','@d','@e','@f','@g','@h')
    goexec tushuluru 'DELPHI','0007','YYL',5,'xxxx','中级','007','10'
    提示错误是:将数据类型 varchar 转换为 float 时出错。去掉10的引号也不行,不知道是为什么
      

  4.   

    你的插入语句中,把变量的引号去掉.
    create table book
    (
     b_name varchar(20),
     b_id char(4) primary key,
     b_writer char(8),
     b_num int,
     b_publisher varchar(20),
     b_class varchar(20),
     b_class_id char(5),
     b_prise float,
     b_comment varchar(20)
    )
    gocreate procedure tushuluru /*图书录入*/
     @a varchar(20),@b char(4),@c char(8),@d int,@e varchar(20),@f varchar(20),@g char(5),@h float
    as   
    insert into book(b_name,b_id,b_writer,b_num,b_publisher,b_class,b_class_id,b_prise)
    values(@a,@b,@c,@d,@e,@f,@g,@h)
    goexec tushuluru 'DELPHI','0007','YYL',5,'xxxx','中级','007',10select * from bookdrop table book
    drop procedure tushuluru/*b_name               b_id b_writer b_num       b_publisher          b_class              b_class_id b_prise                                               b_comment            
    -------------------- ---- -------- ----------- -------------------- -------------------- ---------- ----------------------------------------------------- -------------------- 
    DELPHI               0007 YYL      5           xxxx                 中级                   007        10.0                                                  NULL(所影响的行数为 1 行)
    */