这是我写的
ALTER PROCEDURE [dbo].[Sp_InUp_TerminalMessageRelation]
@TerminalId int,
@MessageId int
AS
declare @SCreenNo int
declare @Count int
select @SCreenNo= SCreenNo from [message] where id = @MessageId
select @Count =count(*) from TerminalMessageRelation where terminalid =@TerminalId and messagetype = @SCreenNo
if(@Count >0)
update TerminalMessageRelation set MessageId = @MessageId where terminalid =@TerminalId and messagetype = @SCreenNo 
else insert into TerminalMessageRelation(MessageId,MessageType,TerminalId)values(@MessageId,@SCreenNo,@TerminalId)怎么写到数据库中MessageType是空的
另外我在程序调用还出错了

解决方案 »

  1.   

    不了解,貌似@MessageId没有定义。
      

  2.   

    程序中报Sp_InUp_TerminalMessageRelation有语法错误,但是我在数据库中直接执行又没问题,
    只是MessageType是空的
      

  3.   

     改成这个试试 set @SCreenNo= (select SCreenNo from [message] where id = @MessageId)set @Count =(select count(*) from TerminalMessageRelation where terminalid =@TerminalId and messagetype = @SCreenNo
    )
      

  4.   

    1.说明你的@SCreenNo变量查询出来是空
    2.出的什么错呢,怎么调用的呢单独这样看你的存储过程,至少从语法上是正确的
      

  5.   

    加上begin end再试试
    ALTER PROCEDURE [dbo].[Sp_InUp_TerminalMessageRelation]
    @TerminalId int,
    @MessageId int
    AS
    begin
      declare @SCreenNo int
      declare @Count int
      select @SCreenNo= SCreenNo from [message] where id = @MessageId
      select @Count =count(*) from TerminalMessageRelation where terminalid =@TerminalId and messagetype = @SCreenNo
      if (@Count >0)
        update TerminalMessageRelation set MessageId = @MessageId where terminalid =@TerminalId and messagetype = @SCreenNo  
      else
        insert into TerminalMessageRelation(MessageId,MessageType,TerminalId) values (@MessageId,@SCreenNo,@TerminalId)
    end
      

  6.   

    select @SCreenNo= SCreenNo from [message] where id = @MessageId
    唯一对@SCreenNo操作的就是这里,如果INSERT后MessageType为空,那多半就是@SCreenNo为空,也就是SELECT语句那里得到的就是为空。
      

  7.   

    @SCreenNo 为空,MessageType 为空。
      

  8.   

    语法没错误把select SCreenNo from [message] where id = @MessageId 这条语句执行下,看结果集
      

  9.   

    select @SCreenNo= SCreenNo from [message] where id = @MessageId
    --如果这里返回不止一条,@SCreenNo只有这才赋值
    改成
    set @SCreenNo=(select top 1 SCreenNo from [message] where id = @MessageId)