如果为空就插入一条语句 不为空就更新
DECLARE @vOutTime varchar(20)
set @vOutTime = (SELECT Time FROM INFOTABLE WHERE  AA=45 AND Time IS NOT NULL)
IF(@vOutTime >1)
{
  如果为空就插入语句
}
ELSE
{
   UPDATE
}

解决方案 »

  1.   

    if exists(select * from tablename where column is null)
      

  2.   

    在关键字 'column' 附近有语法错误。
      

  3.   

    set @vOutTime = (SELECT Time FROM INFOTABLE WHERE AA=45 AND Time IS NOT NULL)
    IF(@vOutTime >1)
    {
    如果为空就插入语句
    }
    ELSE
    {
    UPDATE
    }
    --------------------
    不明白,@vOutTime >1 就为空,什么逻辑
      

  4.   

    DECLARE @vOutTime int
    SELECT @vOutTime=count(Time) FROM INFOTABLE WHERE  AA=45 AND Time IS NOT NULL
    IF(@vOutTime >0)
       UPDATE
    else
      如果为空就插入语句
      

  5.   

    DECLARE @vOutTime varchar(20)
    set @vOutTime = (SELECT Time FROM INFOTABLE WHERE  AA=45 AND Time IS NOT NULL)
    IF(@vOutTime >1)
    {
      如果为空就插入语句
    }
    ELSE
    {
       UPDATE
    }--------------寫反了吧
      

  6.   

    CREATE PROCEDURE pr_CarArriveTime
    @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
    这是我写的原代码
      

  7.   

    我执行 EXEC pr_CarArriveTime 623,3,'2007-09-14 09:31:49',0.000466提示错误为下面的服务器: 消息 245,级别 16,状态 1,过程 pr_CarArriveTime,行 10
    将 varchar 值 '2007-09-14 09:31:49' 转换为数据类型为 int 的列时发生语法错误。
      

  8.   

    if exists (SELECT ArriveTime FROM CAR_ARRIVE_INFO WHERE VehicleId = @iVehicleId AND SN = @iSn AND ArriveTime > 0)
      

  9.   

    set @vOutTime = (SELECT ArriveTime FROM CAR_ARRIVE_INFO WHERE VehicleId = @iVehicleId AND SN = @iSn AND ArriveTime IS NOT NULL)
    if(@vOutTime>0)
    ----------------------
    说说这个的逻辑或者叫用意吧
      

  10.   

    改成 这样还是有问题
    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 的列时发生语法错误。
      

  11.   

    用意很简单啊判断ArriveTime 是不是没有数据 如果没有数据就更新ArriveTime这个字段
    如果有数据就不更新ArriveTime 而是更新OutTime字段了
      

  12.   

    怎么总是提示如下错误呢!
    服务器: 消息 245,级别 16,状态 1,过程 pr_CarArriveTime,行 10
    将 varchar 值 '2007-09-14 09:31:49' 转换为数据类型为 int 的列时发生语法错误。
      

  13.   

    set @vOutTime = SELECT count(ArriveTime) FROM CAR_ARRIVE_INFO WHERE  VehicleId = @iVehicleId AND SN = @iSn AND ArriveTime IS NOT NULL)
      

  14.   

    用意很简单啊
    判断ArriveTime 是不是没有数据 如果没有数据就更新ArriveTime这个字段
    如果有数据就不更新ArriveTime 而是更新OutTime字段了--------------------------是没有“数据”还是没有“记录”
    从你的代码根本,看不出意图,又象判断数据,又象判断记录,又两不象。另:ArriveTime怎么会没数据,NULL也是数据。
      

  15.   

    要解决报错很简单:if(@vOutTime>'0')这样就行了,问题逻辑不知道对不对。
      

  16.   

    LZ你说的好像不对吧,,如果(@vOutTime>'1')这个成立的话,他就不会为空!~请LZ讲明白点,,我看不懂
      

  17.   

    SELECT case 
                when a.Time='' then 插入
                else 更新
                end
    FROM
    (SELECT replace(Time,' ','') as Time FROM INFOTABLE WHERE AA=45 AND Time IS NOT NULL) a