初写存储过程。。。对这种报错。。郁闷到极点。。。 values(OrderNo,convert..OrderNo出错,改为@pi_OrderNo试试 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 insert into后面的values(OrderNo,……有误,应该是你定义的变量@pi_OrderNo 另外,写insert语句的时候,如果表的字段太多,可以固定个数,分多行书写,然后在values或者select相应的值时,与之一一对应,这样能够较容易的发现问题 对于那个convert 是否是用得太不好了。直接用个日期的参数不行吗? 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)ASbegininsert 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 1endGO 你所报错的原因主要是在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) ASbegin 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 1endGO 。。谢谢大家了现在在家。还不能调试。。通过这个贴子,我学习到了存储过程的书写要规范,才能防止漏写和错写。。。非常感激所有的人。,感谢 zjcxc(邹建) ( ) 和 vileboy(立晨资讯_追星族_傻子) 的代码我会去试的 vileboy(立晨资讯_追星族_傻子) 说用varchar代替datetime。,这种方法是否好呢?。能将用户的输入统一起来吗?。好了马上结。再次感谢所有的人。 sqlserver帮找下错误 关于身份验证方式问题 表格数据查询 请教一个SQL查询问题 select的问题 找遍互联网也没找到解决办法,怎么用维护计划删除本地发布产生的文件? 求sql【复制同一表记录,但有两个字段需要修改--详情 Btn_oncliek】 sql问题 如何得到数据库当前用户的登录名??? 存储过程与调用(Delphi)???????? 如何检索记录内容中的“[”符号 如何用SQL语句列出某张表的所有字段
有误,应该是你定义的变量@pi_OrderNo
@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
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
通过这个贴子,我学习到了存储过程的书写要规范,才能防止漏写和错写。。
。非常感激所有的人。,感谢 zjcxc(邹建) ( ) 和 vileboy(立晨资讯_追星族_傻子) 的代码我会去试的
vileboy(立晨资讯_追星族_傻子) 说用varchar代替datetime。,这种方法是否好呢?。
能将用户的输入统一起来吗?。
好了马上结。
再次感谢所有的人。