其中@入厂日期为datetime型
DECLARE @STR nvarchar(1000)
    SET @STR='INSERT INTO BasicInfo 
                 (当前辊径,入厂日期,轧辊编号,出厂编号,合格证编号,材质,重量,适用品种,适用区域,是否精开,生产厂家,硬度,总轧制量,备注,是否报废,类别,是否可用,辊径'+@STR1+') 
                 VALUES 
                 ('+cast(@当前辊径 as nvarchar)+',cast('+cast(@入厂日期 as nvarchar)+' as datetime),'+@轧辊编号+','+@出厂编号+','+@合格证编号+','+@材质+','+cast(@重量 as nvarchar)+','+@适用品种+','+@适用区域+','+@是否精开+','+@生产厂家+','+cast(@硬度 as nvarchar)+','+cast(@总轧制量 as nvarchar)+','+@备注+','+@是否报废+','+@类别+','+@是否可用+','+cast(@辊径 as nvarchar)+@STR2+');'
    
    EXEC(@STR)我是这样写存储过程的,好像有点问题,不知道各位能不能帮忙。

解决方案 »

  1.   

    VALUES(cast('+@当前辊径+' as nvarchar),??
      

  2.   

    那它变量都声名的情况下:
    try:
    DECLARE @STR nvarchar(1000) 
        SET @STR='
    INSERT INTO BasicInfo(
        当前辊径,入厂日期,轧辊编号,出厂编号,合格证编号,材质,重量,适用品种,
        适用区域,是否精开,生产厂家,硬度,总轧制量,备注,是否报废,类别,是否可用,辊径'+@STR1+') 
        VALUES('
        +cast(@当前辊径 as nvarchar)+','+convert(varchar,@入厂日期,23)+','+@轧辊编号+','+@出厂编号
        +','+@合格证编号+','+@材质+','+cast(@重量 as nvarchar)+','+@适用品种+','+@适用区域+','+@是否精开
        +','+@生产厂家+','+cast(@硬度 as nvarchar)+','+cast(@总轧制量 as nvarchar)+','+@备注+','+@是否报废
        +','+@类别+','+@是否可用+','+cast(@辊径 as nvarchar)+@STR2+');'     
    EXEC(@STR) 
      

  3.   

    楼主PRING @STR看看哪里不正确?
      

  4.   


    按你提供的方法改了改,日期可以穿进去,但日期值不对,我用的datetime.now
    传入的数据却是1905-6-5 0:00:00
      

  5.   

    DECLARE @STR nvarchar(1000) 
        SET @STR='
    INSERT INTO BasicInfo(
        当前辊径,入厂日期,轧辊编号,出厂编号,合格证编号,材质,重量,适用品种,
        适用区域,是否精开,生产厂家,硬度,总轧制量,备注,是否报废,类别,是否可用,辊径'+@STR1+') 
        VALUES('
        +cast(@当前辊径 as nvarchar)+','+convert(varchar,@入厂日期,23)+','+@轧辊编号+','+@出厂编号
        +','+@合格证编号+','''+@材质+''','+cast(@重量 as nvarchar)+','''+@适用品种+''','''+@适用区域+''','''+@是否精开
        +''','''+@生产厂家+''','''+cast(@硬度 as nvarchar)+''','+cast(@总轧制量 as nvarchar)+','''+@备注+''','''+@是否报废
        +''','+@类别+','+@是否可用+','+cast(@辊径 as nvarchar)+@STR2+');'     
    EXEC(@STR) 应该把字符串类型的变量再加引号。(请楼主检查哪些属于字符型的)
      

  6.   


    cast('+cast(@入厂日期 as nvarchar)+' as datetime
    插入值时,应该也要用引号引起来
      

  7.   

        @轧辊编号 nvarchar(50)='',
    @出厂编号 nvarchar(50)='',
    @合格证编号 nvarchar(50)='',
    @材质 nvarchar(20)='',
    @重量 float=null,
    @适用品种 nvarchar(20)='',
    @适用区域 nvarchar(20)='',
    @是否精开 nvarchar(8)='',
    @生产厂家 nvarchar(20)='',
    @硬度 float='',
    @总轧制量 float='',
    @备注 nvarchar(200)='',
    @是否报废 nvarchar(8)='',
    @类别 nvarchar(20)='',
    @芯轴编号 nvarchar(50)='',
    @轴环编号 nvarchar(50)='',
    @过盈量 float='',
        @是否可用 nvarchar(8)='',
        @辊径 float='',
        @入厂日期 datetime='',
        @当前辊径 float=''
    我设定的是这样的,别的都测试过没有问题,就是日期输入有问题。
      

  8.   

    DECLARE @STR nvarchar(1000) 
        SET @STR='
    INSERT INTO BasicInfo(
        当前辊径,入厂日期,轧辊编号,出厂编号,合格证编号,材质,重量,适用品种,
        适用区域,是否精开,生产厂家,硬度,总轧制量,备注,是否报废,类别,是否可用,辊径'+@STR1+') 
        VALUES('
        +cast(@当前辊径 as nvarchar)+','+convert(varchar(20),@入厂日期,23)+','+@轧辊编号+','+@出厂编号
        +','+@合格证编号+','+@材质+','+cast(@重量 as nvarchar)+','+@适用品种+','+@适用区域+','+@是否精开
        +','+@生产厂家+','+cast(@硬度 as nvarchar)+','+cast(@总轧制量 as nvarchar)+','+@备注+','+@是否报废
        +','+@类别+','+@是否可用+','+cast(@辊径 as nvarchar)+@STR2+');'     
    EXEC(@STR)将TONY哥改下看行不???
      

  9.   

    convert(varchar(20),@入厂日期)
    你是DATETIME.NOW()所以长度应该要长点,不要23试试???
      

  10.   


    吧varchar后面加个限定也没什么变化啊,还是存入了1905-6-5 0:00:00
      

  11.   

    datetime.now.ToString("yyyy-MM-dd"),不知道了,转换一下程序日期格式试试??