我遇到一个问题,即变量没有被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行,所有正确位置的值都没有,所选值中没有空值。
我做错了什么?
答案 0 :(得分:4)
看起来你的WHERE
子句可能会阻止该行返回。您提到您在没有设置变量的情况下测试了相同的SELECT
,但您列出的代码不包含此WHERE
- 所以它不一样。
使用SELECT
测试您的WHERE
,使用虚拟值(可能为NULL
)并进行审核。它听起来好像没有返回结果。
答案 1 :(得分:0)
您在select语句中设置@contract_id
,但在where子句中也使用它。我原以为@contract_id
会null
?