values(OrderNo,convert..OrderNo出错,改为@pi_OrderNo试试

解决方案 »

  1.   

    insert into后面的values(OrderNo,……
    有误,应该是你定义的变量@pi_OrderNo
      

  2.   

    另外,写insert语句的时候,如果表的字段太多,可以固定个数,分多行书写,然后在values或者select相应的值时,与之一一对应,这样能够较容易的发现问题
      

  3.   

    对于那个convert 是否是用得太不好了。直接用个日期的参数不行吗?
      

  4.   

    CREATE PROCEDURE [sp_WriteInputData]
    @pi_OrderNo varchar(30),
    @pi_OrderDateYear char(4),
    @pi_OrderDateMonth char(2),
    @pi_OrderDateDay char(2),
    @pi_OrderDateHour char(2),
    @pi_OrderDateMinute char(2),
    @pi_OrderDateSecond char(2),
    @pi_OrderMan varchar(120),
    @pi_CustomerOrderNo varchar(30),
    @pi_CustomerCode varchar(30),
    @pi_CustomerName varchar(120),
    @pi_CustomerType char(10),
    @pi_CustomerAddress varchar(255),
    @pi_CustomerTel varchar(32),
    @pi_CustomerFax varchar(32),
    @pi_CustomerEmail varchar(32),
    @pi_CustomerMaster varchar(32),
    @pi_CustomerRe varchar(255),
    @pi_LoadAddress varchar(255),
    @pi_LoadDateYear char(4),
    @pi_LoadDateMonth char(2),
    @pi_LoadDateDay char(2),
    @pi_GoodsRe varchar(255),
    @pi_GoodsLinkman varchar(30),
    @pi_GoodsOwner varchar(120),
    @pi_TrunkType varchar(30),
    @pi_TrunkTonnage varchar(10),
    @pi_GoodsDeliverDate char(8),
    @pi_Re varchar(255),
    @pi_Creator varchar(120)
    AS
    begin
    insert into GM_OrderHead(
    OrderNo,OrderDate,OrderMan,CustomerOrderNo,CustomerCode,
    CustomerName,CustomerType,CustomerAddress,CustomerTel,
    CustomerFax,CustomerEmail,CustomerMaster,CustomerRe,
    LoadAddress,LoadDate,GoodsRe,GoodsLinkman,GoodsOwner,
    TrunkType,TrunkTonnage,GoodsDeliverDate,Re,Creator,CreateDate
    ) values(
    @pi_OrderNo,convert(datetime,@pi_OrderDateYear+'/'+@pi_OrderDateMonth+'/'+@pi_OrderDateDay+@pi_OrderDateHour+':'+@pi_OrderDateMinute+':'+@pi_OrderDateSecond),
    @pi_OrderMan,@pi_CustomerOrderNo,@pi_CustomerCode,
    @pi_CustomerName,@pi_CustomerType,@pi_CustomerAddress,@pi_CustomerTel,
    @pi_CustomerFax,@pi_CustomerEmail,@pi_CustomerMaster,@pi_CustomerRe,
    @pi_LoadAddress,convert(datetime,@pi_LoadDateYear+'/'+@pi_LoadDateMonth+'/'+@pi_LoadDateDay),
    @pi_GoodsRe,@pi_GoodsLinkman,@pi_GoodsOwner,
    @pi_TrunkType,@pi_TrunkTonnage,convert(datetime,@pi_GoodsDeliverDate),
    @pi_Re,@pi_Creator,getdate())
    if(@@rowcount=1)
    select '1' Status
    else
    select '-1' Status

    return 1
    end
    GO
      

  5.   

    你所报错的原因主要是在insert…… values()括号中本来是填值的,但是你填了字段名,而且不要给datetime类型指定长度,而且在参数中,我认为最好用varchar类型代替datetime类型,免了转换,下面的帮你编译通过了。
    CREATE PROCEDURE [sp_WriteInputData]
    @pi_OrderNo varchar(30),
    @pi_OrderDateYear varchar(4),--datetime->varchar,免得转换。
    @pi_OrderDateMonth varchar(2),--datetime->varchar,免得转换。
    @pi_OrderDateDay varchar(2),--datetime->varchar,免得转换。
    @pi_OrderDateHour varchar(2),--datetime->varchar,免得转换。
    @pi_OrderDateMinute varchar(2),--datetime->varchar,免得转换。
    @pi_OrderDateSecond varchar(2),--datetime->varchar,免得转换。
    @pi_OrderMan varchar(120),
    @pi_CustomerOrderNo varchar(30),
    @pi_CustomerCode varchar(30),
    @pi_CustomerName varchar(120),
    @pi_CustomerType char(10),
    @pi_CustomerAddress varchar(255),
    @pi_CustomerTel varchar(32),
    @pi_CustomerFax varchar(32),
    @pi_CustomerEmail varchar(32),
    @pi_CustomerMaster varchar(32),
    @pi_CustomerRe varchar(255),
    @pi_LoadAddress varchar(255),
    @pi_LoadDateYear varchar(4),--datetime->varchar,免得转换。
    @pi_LoadDateMonth varchar(2),--datetime->varchar,免得转换。
    @pi_LoadDateDay varchar(2),--datetime->varchar,免得转换。
    @pi_GoodsRe varchar(255),
    @pi_GoodsLinkman varchar(30),
    @pi_GoodsOwner varchar(120),
    @pi_TrunkType varchar(30),
    @pi_TrunkTonnage varchar(10),
    @pi_GoodsDeliverDate varchar(8),--这里最好还是varchar类型好,免得转换。
    @pi_GoodsDeliverDateyear varchar(20),--我加上的,因为你语句中用到了
    @pi_GoodsDeliverDatemonth varchar(20),--我加上的,因为你语句中用到了
    @pi_GoodsDeliverDateday varchar(20),--我加上的,因为你语句中用到了
    @pi_Re varchar(255),
    @pi_Creator varchar(120)
     AS
    begin
    insert into GM_OrderHead(OrderNo,OrderDate,OrderMan,CustomerOrderNo,CustomerCode,CustomerName,CustomerType,
    CustomerAddress,CustomerTel,CustomerFax,CustomerEmail,CustomerMaster,CustomerRe,
    LoadAddress,LoadDate,GoodsRe,GoodsLinkman,GoodsOwner,TrunkType,TrunkTonnage,
    GoodsDeliverDate,Re,Creator,CreateDate) 
    values(@pi_OrderNo,convert(datetime,@pi_OrderDateYear+'/'+@pi_OrderDateMonth+'/'+@pi_OrderDateDay+@pi_OrderDateHour+':'+@pi_OrderDateMinute+':'+@pi_OrderDateSecond),
    @pi_OrderMan,@pi_CustomerOrderNo,@pi_CustomerCode,@pi_CustomerName,@pi_CustomerType,@pi_CustomerAddress,@pi_CustomerTel,@pi_CustomerFax,
    @pi_CustomerEmail,@pi_CustomerMaster,@pi_CustomerRe,@pi_LoadAddress,
    convert(datetime,@pi_LoadDateYear+'/'+@pi_LoadDateMonth+'/'+@pi_LoadDateDay),@pi_GoodsRe,@pi_GoodsLinkman,
    @pi_GoodsOwner,@pi_TrunkType,@pi_TrunkTonnage,convert(datetime,@pi_GoodsDeliverDate+'/'+@pi_GoodsDeliverDateMonth+'/'+@pi_GoodsDeliverDateDay),
    @pi_Re,@pi_Creator,getdate())
    if(@@rowcount=1)
    select '1' Status
    else
    select '-1' Status

    return 1
    end
    GO
      

  6.   

    。。谢谢大家了现在在家。还不能调试。。
    通过这个贴子,我学习到了存储过程的书写要规范,才能防止漏写和错写。。
    。非常感激所有的人。,感谢 zjcxc(邹建) ( ) 和 vileboy(立晨资讯_追星族_傻子) 的代码我会去试的
     vileboy(立晨资讯_追星族_傻子) 说用varchar代替datetime。,这种方法是否好呢?。
    能将用户的输入统一起来吗?。
    好了马上结。
    再次感谢所有的人。