楼主,新年快乐!
我也要回家过年了,呵呵,没时间,大概帮你看了一下,有点问题,说参数找不到,不知道是不是你传少了值
aa '1','1','1','1'
应该有四个值传进去,程序里有点问题:insert into b(书号,书名,分类号) values(@a,@b,@c) 
select * from yangben
^^^^^^^^^^^^^^^^^^^^^ 不知楼主这句话什么作用?返回结果是吧?
if @@error<>0
   ^^^^^^^^此处的@error将返回上句select的结果,即如果上句的select *   from yangben没问题,这里就将是0,不知是否楼主本意?
rollback tran
else
commit tran

解决方案 »

  1.   

    不好意思,我的执行代码有点错误:
    select * from yangben  应该是select * from b请帮我修改一下!谁能帮我修改一下存储过程!谢谢
      

  2.   

    =======================================================
    CREATE PROCEDURE aa
    @a char(3),
    @b varchar(8),
    @d varchar(8)
    as
    declare @c char(1)begin tran
    set @c=(select 分类号 from a where 类别=@d)
    insert into b(书号,书名,分类号) values(@a,@b,@c) 
    select * from yangben
    if @@error<>0
      rollback tran
    else
      commit tran
    ============================================================
    既然@c是在proc中取就不用传值进来了,试试看上面的
    aa '001','红楼梦','小说'大过年的,随便帮你看看,没有测试哦。Happy New Year