SET @STR='INSERT INTO BasicInfo 
                 (轧辊编号,出厂编号,合格证编号,材质,重量,适用品种,适用区域,是否精开,生产厂家,硬度,总轧制量,备注,是否报废,类别) 
                 VALUES 
                 ('+@轧辊编号+','+@出厂编号+','+@合格证编号+','+@材质+','+cast(@重量 as nvarchar)+','+@适用品种+','+@适用区域+','+cast(@是否精开 as nvarchar)+','+@生产厂家+','+cast(@硬度 as nvarchar)+','+cast(@总轧制量 as nvarchar)+','+@备注+','+cast(@是否报废 as nvarchar)+','+@类别+');'
    
    EXEC(@STR)
其中,原来的重量,硬度,总轧制量都是float型,而是否精开,是否报废都是bit型。现在我存入的的数据,还是原来我设定的类型么。

解决方案 »

  1.   

    我问的是插入的数值,看数值的类型是原来的类型(比如FLOAT,BIT)还是nvarchar的类型,
    由于刚开始,还不是很好检测,所以来问问。
      

  2.   

    VALUES 
                    ('+@轧辊编号+','+@出厂编号+','+@合格证编号+','+@材质+','+cast(@重量 as nvarchar)+','+@适用品种+','+@适用区域+','+cast(@是否精开 as nvarchar)+','+@生产厂家+','+cast(@硬度 as nvarchar)+','+cast(@总轧制量 as nvarchar)+','+@备注+','+cast(@是否报废 as nvarchar)+','+@类别+');' 因为这是一个动态SQL,所以
    里面的值为数值类型的,要转化成字符格式,如varchar,nvarchar等。
    数值类型不会变的。
      

  3.   

    数字类型不会变咯
    动态查询 ''里面的东西都要字符型才能相加连起来 
    你可以插入之后 select 出来看看就知道了