如果为空就插入一条语句 不为空就更新
DECLARE @vOutTime varchar(20)
set @vOutTime = (SELECT Time FROM INFOTABLE WHERE AA=45 AND Time IS NOT NULL)
IF(@vOutTime >1)
{
如果为空就插入语句
}
ELSE
{
UPDATE
}
DECLARE @vOutTime varchar(20)
set @vOutTime = (SELECT Time FROM INFOTABLE WHERE AA=45 AND Time IS NOT NULL)
IF(@vOutTime >1)
{
如果为空就插入语句
}
ELSE
{
UPDATE
}
IF(@vOutTime >1)
{
如果为空就插入语句
}
ELSE
{
UPDATE
}
--------------------
不明白,@vOutTime >1 就为空,什么逻辑
SELECT @vOutTime=count(Time) FROM INFOTABLE WHERE AA=45 AND Time IS NOT NULL
IF(@vOutTime >0)
UPDATE
else
如果为空就插入语句
set @vOutTime = (SELECT Time FROM INFOTABLE WHERE AA=45 AND Time IS NOT NULL)
IF(@vOutTime >1)
{
如果为空就插入语句
}
ELSE
{
UPDATE
}--------------寫反了吧
@iVehicleId numeric,
@iSn numeric,
@vArriveTime varchar(20),
@iDistnce float
AS
BEGIN
DECLARE @vOutTime varchar(20)
set @vOutTime = (SELECT ArriveTime FROM CAR_ARRIVE_INFO WHERE VehicleId = @iVehicleId AND SN = @iSn AND ArriveTime IS NOT NULL)
if(@vOutTime>0)
BEGIN
UPDATE CAR_ARRIVE_INFO
SET OutTime = @vArriveTime,Distnce=@iDistnce,State=1
WHERE VehicleId = @iVehicleId AND SN=@iSn
END
ELSE
BEGIN
UPDATE CAR_ARRIVE_INFO
SET ArriveTime = @vArriveTime,Distnce=@iDistnce,State=1
WHERE VehicleId = @iVehicleId AND SN=@iSn
END
END
这是我写的原代码
将 varchar 值 '2007-09-14 09:31:49' 转换为数据类型为 int 的列时发生语法错误。
if(@vOutTime>0)
----------------------
说说这个的逻辑或者叫用意吧
if exists (SELECT ArriveTime FROM CAR_ARRIVE_INFO WHERE VehicleId = @iVehicleId AND SN = @iSn AND ArriveTime > 0)服务器: 消息 245,级别 16,状态 1,过程 pr_CarArriveTime,行 10
将 varchar 值 '2007-09-14 09:31:49' 转换为数据类型为 int 的列时发生语法错误。
如果有数据就不更新ArriveTime 而是更新OutTime字段了
服务器: 消息 245,级别 16,状态 1,过程 pr_CarArriveTime,行 10
将 varchar 值 '2007-09-14 09:31:49' 转换为数据类型为 int 的列时发生语法错误。
判断ArriveTime 是不是没有数据 如果没有数据就更新ArriveTime这个字段
如果有数据就不更新ArriveTime 而是更新OutTime字段了--------------------------是没有“数据”还是没有“记录”
从你的代码根本,看不出意图,又象判断数据,又象判断记录,又两不象。另:ArriveTime怎么会没数据,NULL也是数据。
when a.Time='' then 插入
else 更新
end
FROM
(SELECT replace(Time,' ','') as Time FROM INFOTABLE WHERE AA=45 AND Time IS NOT NULL) a