出现了如下的错误:消息 156,级别 15,状态 1,过程 up_storeNowData,第 43 行
关键字 'ELSE' 附近有语法错误。ALTER PROCEDURE [dbo].[up_storeNowData]
@ldNO char(11)       = '00000000000',
@ldRecvDate char(14) = '00000000000000',
@ldVisibility real         = 0.0,
@ldTempture real           = 0.0,
@ldHumidity real           = 0.0,
@ldWindSpeed real          = 0.0,
@ldWindDirection real      = 0.0,
@ldPressure real           = 0.0 ,
@ldPrecipitation real      = 0.0,
@ldDew real                = 0.0,
@ldRoadTempture real       = 0.0,
@ldPointFreezing real      = 0.0,
@ldWaterfilmThickness real = 0.0 ,
@ldSalinity real           = 0.0,
@ldRoadState real          = 0.0
AS
BEGIN
declare @cmd varchar(1000)  
IF EXISTS(select ld_no from dbo.NowSTData where ld_no = @ldNO)   --UPDATE dbo.NowSTData SET ld_recv_date = @ldRecvDate,
   set @cmd = 'UPDATE NowSTData' + ' SET ld_recv_date = ' + ltrim(@ldRecvDate) + ','
              + 'ld_visibility = ' + isnull(ltrim(@ldVisibility),'null') + ',' 
              + 'ld_tempture = ' + isnull(ltrim(@ldTempture),'null') + ','
              + 'ld_humidity = ' + isnull(ltrim(@ldHumidity),'null')  + ','
              + 'ld_wind_speed = ' + isnull(ltrim(@ldWindSpeed),'null')  + ','
              + 'ld_wind_direction = ' + isnull(ltrim(@ldWindDirection),'null')  + ','
              + 'ld_pressure = ' + isnull(ltrim(@ldPressure),'null')  + ',' 
              + 'ld_precipitation = ' + isnull(ltrim(@ldPrecipitation),'null') + ','
              + 'ld_dew = ' + isnull(ltrim(@ldDew),'null')  + ','
              + 'ld_road_tempture = ' + isnull(ltrim(@ldRoadTempture),'null')  + ',' 
              + 'ld_point_freezing = ' + isnull(ltrim(@ldPointFreezing),'null')  + ','
              + 'ld_waterfilm_Thickness = ' + isnull(ltrim(@ldWaterfilmThickness),'null')  + ',' 
              + 'ld_salinity = ' + isnull(ltrim(@ldSalinity),'null')  + ','
              + 'ld_road_state = '+ isnull(ltrim(@ldRoadState),'null')
  exec(@cmd)ELSE   set @cmd = 'INSERT NowSTData' + ' VALUES(' + ltrim(@ldNO) + ',' + ltrim(@ldRecvDate)+ ',' 
              + isnull(ltrim(@ldVisibility),'null') + ',' 
              + isnull(ltrim(@ldTempture),'null') + ','
              + isnull(ltrim(@ldHumidity),'null')  + ',' 
              + isnull(ltrim(@ldWindSpeed),'null')  + ',' 
              + isnull(ltrim(@ldWindDirection),'null')  + ',' 
              + isnull(ltrim(@ldPressure),'null')  + ',' 
              + isnull(ltrim(@ldPrecipitation),'null') + ',' 
              + isnull(ltrim(@ldDew),'null')  + ',' 
              + isnull(ltrim(@ldRoadTempture),'null')  + ',' 
              + isnull(ltrim(@ldPointFreezing),'null')  + ','
              + isnull(ltrim(@ldWaterfilmThickness),'null')  + ',' 
              + isnull(ltrim(@ldSalinity),'null')  + ','
              + isnull(ltrim(@ldRoadState),'null')  + ')'
   exec(@cmd)END

解决方案 »

  1.   

    ALTER PROCEDURE [dbo].[up_storeNowData] 
    @ldNO char(11)      = '00000000000', 
    @ldRecvDate char(14) = '00000000000000', 
    @ldVisibility real        = 0.0, 
    @ldTempture real          = 0.0, 
    @ldHumidity real          = 0.0, 
    @ldWindSpeed real          = 0.0, 
    @ldWindDirection real      = 0.0, 
    @ldPressure real          = 0.0 , 
    @ldPrecipitation real      = 0.0, 
    @ldDew real                = 0.0, 
    @ldRoadTempture real      = 0.0, 
    @ldPointFreezing real      = 0.0, 
    @ldWaterfilmThickness real = 0.0 , 
    @ldSalinity real          = 0.0, 
    @ldRoadState real          = 0.0 
    AS 
    BEGIN 
    declare @cmd varchar(1000)  
    IF EXISTS(select ld_no from dbo.NowSTData where ld_no = @ldNO) 
     BEGIN
      --UPDATE dbo.NowSTData SET ld_recv_date = @ldRecvDate, 
      set @cmd = 'UPDATE NowSTData' + ' SET ld_recv_date = ' + ltrim(@ldRecvDate) + ',' 
                  + 'ld_visibility = ' + isnull(ltrim(@ldVisibility),'null') + ',' 
                  + 'ld_tempture = ' + isnull(ltrim(@ldTempture),'null') + ',' 
                  + 'ld_humidity = ' + isnull(ltrim(@ldHumidity),'null')  + ',' 
                  + 'ld_wind_speed = ' + isnull(ltrim(@ldWindSpeed),'null')  + ',' 
                  + 'ld_wind_direction = ' + isnull(ltrim(@ldWindDirection),'null')  + ',' 
                  + 'ld_pressure = ' + isnull(ltrim(@ldPressure),'null')  + ',' 
                  + 'ld_precipitation = ' + isnull(ltrim(@ldPrecipitation),'null') + ',' 
                  + 'ld_dew = ' + isnull(ltrim(@ldDew),'null')  + ',' 
                  + 'ld_road_tempture = ' + isnull(ltrim(@ldRoadTempture),'null')  + ',' 
                  + 'ld_point_freezing = ' + isnull(ltrim(@ldPointFreezing),'null')  + ',' 
                  + 'ld_waterfilm_Thickness = ' + isnull(ltrim(@ldWaterfilmThickness),'null')  + ',' 
                  + 'ld_salinity = ' + isnull(ltrim(@ldSalinity),'null')  + ',' 
                  + 'ld_road_state = '+ isnull(ltrim(@ldRoadState),'null') 
      exec(@cmd) 
      END
    ELSE 
    BEGIN
      set @cmd = 'INSERT NowSTData' + ' VALUES(' + ltrim(@ldNO) + ',' + ltrim(@ldRecvDate)+ ',' 
                  + isnull(ltrim(@ldVisibility),'null') + ',' 
                  + isnull(ltrim(@ldTempture),'null') + ',' 
                  + isnull(ltrim(@ldHumidity),'null')  + ',' 
                  + isnull(ltrim(@ldWindSpeed),'null')  + ',' 
                  + isnull(ltrim(@ldWindDirection),'null')  + ',' 
                  + isnull(ltrim(@ldPressure),'null')  + ',' 
                  + isnull(ltrim(@ldPrecipitation),'null') + ',' 
                  + isnull(ltrim(@ldDew),'null')  + ',' 
                  + isnull(ltrim(@ldRoadTempture),'null')  + ',' 
                  + isnull(ltrim(@ldPointFreezing),'null')  + ',' 
                  + isnull(ltrim(@ldWaterfilmThickness),'null')  + ',' 
                  + isnull(ltrim(@ldSalinity),'null')  + ',' 
                  + isnull(ltrim(@ldRoadState),'null')  + ')' 
      exec(@cmd) 
    ENDEND试试,把CMD输出PRINT来看看
      

  2.   

    ALTER PROCEDURE [dbo].[up_storeNowData] 
    @ldNO char(11)      = '00000000000', 
    @ldRecvDate char(14) = '00000000000000', 
    @ldVisibility real        = 0.0, 
    @ldTempture real          = 0.0, 
    @ldHumidity real          = 0.0, 
    @ldWindSpeed real          = 0.0, 
    @ldWindDirection real      = 0.0, 
    @ldPressure real          = 0.0 , 
    @ldPrecipitation real      = 0.0, 
    @ldDew real                = 0.0, 
    @ldRoadTempture real      = 0.0, 
    @ldPointFreezing real      = 0.0, 
    @ldWaterfilmThickness real = 0.0 , 
    @ldSalinity real          = 0.0, 
    @ldRoadState real          = 0.0 
    AS 
    BEGIN 
    declare @cmd varchar(1000)  
    IF EXISTS(select ld_no from dbo.NowSTData where ld_no = @ldNO) 
      BEGIN
      --UPDATE dbo.NowSTData SET ld_recv_date = @ldRecvDate, 
      set @cmd = 'UPDATE NowSTData' + ' SET ld_recv_date = ' + ltrim(@ldRecvDate) + ',' 
                  + 'ld_visibility = ' + isnull(ltrim(@ldVisibility),'null') + ',' 
                  + 'ld_tempture = ' + isnull(ltrim(@ldTempture),'null') + ',' 
                  + 'ld_humidity = ' + isnull(ltrim(@ldHumidity),'null')  + ',' 
                  + 'ld_wind_speed = ' + isnull(ltrim(@ldWindSpeed),'null')  + ',' 
                  + 'ld_wind_direction = ' + isnull(ltrim(@ldWindDirection),'null')  + ',' 
                  + 'ld_pressure = ' + isnull(ltrim(@ldPressure),'null')  + ',' 
                  + 'ld_precipitation = ' + isnull(ltrim(@ldPrecipitation),'null') + ',' 
                  + 'ld_dew = ' + isnull(ltrim(@ldDew),'null')  + ',' 
                  + 'ld_road_tempture = ' + isnull(ltrim(@ldRoadTempture),'null')  + ',' 
                  + 'ld_point_freezing = ' + isnull(ltrim(@ldPointFreezing),'null')  + ',' 
                  + 'ld_waterfilm_Thickness = ' + isnull(ltrim(@ldWaterfilmThickness),'null')  + ',' 
                  + 'ld_salinity = ' + isnull(ltrim(@ldSalinity),'null')  + ',' 
                  + 'ld_road_state = '+ isnull(ltrim(@ldRoadState),'null') 
      exec(@cmd) 
      end
    ELSE
    begin
      set @cmd = 'INSERT NowSTData' + ' VALUES(' + ltrim(@ldNO) + ',' + ltrim(@ldRecvDate)+ ',' 
                  + isnull(ltrim(@ldVisibility),'null') + ',' 
                  + isnull(ltrim(@ldTempture),'null') + ',' 
                  + isnull(ltrim(@ldHumidity),'null')  + ',' 
                  + isnull(ltrim(@ldWindSpeed),'null')  + ',' 
                  + isnull(ltrim(@ldWindDirection),'null')  + ',' 
                  + isnull(ltrim(@ldPressure),'null')  + ',' 
                  + isnull(ltrim(@ldPrecipitation),'null') + ',' 
                  + isnull(ltrim(@ldDew),'null')  + ',' 
                  + isnull(ltrim(@ldRoadTempture),'null')  + ',' 
                  + isnull(ltrim(@ldPointFreezing),'null')  + ',' 
                  + isnull(ltrim(@ldWaterfilmThickness),'null')  + ',' 
                  + isnull(ltrim(@ldSalinity),'null')  + ',' 
                  + isnull(ltrim(@ldRoadState),'null')  + ')' 
      exec(@cmd) 
      end
    END
      

  3.   

    IF后面要加BEGIN END吧
    里面有2条语句啊
      

  4.   

    d 在if后加上begin
    在else前加上end
    是语句块,然后就可以了。
      

  5.   

    当if判断之后要处理的SQL多于1条时需要使用begin....end