变量未通过选择设置

时间:2010-07-28 08:28:52

标签: sql sql-server sql-server-2005 tsql

我遇到一个问题,即变量没有被select语句设置。

select连接表变量@contracts(用于控制循环),然后连接到真实的合约和合约行表。

我的选择是:

select top 1 
        @contract_id = c.contract_id 
        , @account = ch.account
        , @service = cl.service
        , @model = cl.model
        , @serial = cl.serial
        , @contract = ch.contract
    from 
        @contracts c
        inner join contractline cl on c.contract_id = cl.contract_id
        inner join contractheader ch on cl.contract = ch.contract
    where
        cl.contract_id = @contract_id

但是当我选择@contract_id时,我会得到一个NULL,就像我所有的变量一样。

我做了一个简单的select * from @contracts c inner join contractline cl on c.contract_id = cl.contract_id inner join contractheader ch on cl.contract = ch.contract,它返回1行,所有正确位置的值都没有,所选值中没有空值。

我做错了什么?

2 个答案:

答案 0 :(得分:4)

看起来你的WHERE子句可能会阻止该行返回。您提到您在没有设置变量的情况下测试了相同的SELECT,但您列出的代码不包含此WHERE - 所以它不一样。

使用SELECT测试您的WHERE,使用虚拟值(可能为NULL)并进行审核。它听起来好像没有返回结果。

答案 1 :(得分:0)

您在select语句中设置@contract_id,但在where子句中也使用它。我原以为@contract_idnull

相关问题