存储过程
CREATE PROCEDURE insert1
(@ID int,@leixing char)
AS
DECLARE @Level int
BEGIN
 select @level =prents from leixing where id = @id
end  
insert into leixing (leixing,prents) values(@leixing,@Level)
GOsql语句
exec insert1 @id=40,@leixing=学习学习结果
那个[学习学习]在表中是一行空白 怎么回事传值传不过去?

解决方案 »

  1.   


    exec insert1 40,'学习学习'
      

  2.   

    插入语句有你这样写的 
    insert into 表(字段1,字段2) values('值1','值2');
      

  3.   


    create proc insert1
    @ID int,
    @leixing nvarchar(50)
    AS
    DECLARE @Level intselect @level = prents from leixing where id = @idinsert into leixing (leixing,prents) values(@leixing,@Level)GO
      

  4.   

    因为你定义的第二个变量时 char 不能接受你的 ‘学习学习’字符串变量的传入
      

  5.   

    把你存储过程里第二个参数的类型修改成varchar(20)试一试
      

  6.   

    CREATE PROCEDURE insert1
    @ID int,
    @leixing nvarchar(200)
    AS
    select @level =prents from leixing where id = @id 
    insert into leixing(leixing,prents) values(@leixing,@Level)
      

  7.   

    create proc insert1
    @ID int,
    @leixing nvarchar(50)
    AS
    DECLARE @Level intselect @level = prents from leixing where id = @idinsert into leixing (leixing,prents) values(@leixing,@Level)GOexec insert1 40,'学习学习'
      

  8.   

    @leixing char  改为 @leixing nvarchar(50) 
      

  9.   

    @leixing char要给定长度,最好有nvarchar(50)
      

  10.   


    你的插入语句根本不在存储过程中,存储过程到 end 标记的时候就结束了 !
      

  11.   

    13楼 + 11 lou is the solution!
      

  12.   

    --存储过程
    CREATE PROCEDURE insert1
        @ID INT,
        @leixing NVARCHAR(32)
    AS
    DECLARE @Level int
    BEGIN
     select @level =prents from leixing where id = @id
    end   
    insert into leixing (leixing,prents) values(@leixing,@Level)
    GO--sql语句
    EXEC insert1 @id=40,@leixing='学习学习'
      

  13.   

    SQL不熟悉啊。建议多 读书。
      

  14.   


    exec insert1 @id=40,@leixing=学习学习改为
    exec insert1 @id=40,@leixing='学习学习'
      

  15.   


    exec insert1 @id=40,@leixing=学习学习改为
    exec insert1 @id=40,@leixing='学习学习'
      

  16.   

    楼主犯了两个错误:第一,参数 @leixing char 没有指定长度,如果按原来的写法,只是表示一个字符,系统会将超出默认长度的多余字符自动给截断了(此处系统不会报错)。第二,调用过程时给出的字符串参数值没有放在单引号里(此处系统会报错)。
      

  17.   

    --存储过程
    CREATE PROCEDURE insert1
        @ID INT,
        @leixing NVARCHAR(32)
    AS
    DECLARE @Level int
    BEGIN
     select @level =prents from leixing where id = @id
     insert into leixing (leixing,prents) values(@leixing,@Level)
    GO--sql语句
    EXEC insert1 @id=40,@leixing='学习学习'