J'ai un problème où une variable n'est pas définie par une instruction select. Le select rejoint une variable de table @contracts (qui est utilisée pour contrôler une boucle), puis se joint aux tables de contrats et de lignes de contrat réelles.La variable n'est pas définie par select
ma sélection est:
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
Mais quand je fais un select @contract_id dire que je reçois un retour NULL
, comme toutes mes variables.
J'ai fait un simple select * from @contracts c inner join contractline cl on c.contract_id = cl.contract_id inner join contractheader ch on cl.contract = ch.contract
et cela renvoie exactement 1 ligne avec les valeurs dans tous les endroits corrects, pas de null dans les valeurs sélectionnées.
Qu'ai-je fait de mal?
Pouvez-vous publier un peu plus de code, par ex. où vous accédez à la variable. Etes-vous également certain qu'il existe une ligne lorsque vous incluez la clause where dans votre deuxième instruction select? – Paddy
'@ contract_id' a-t-il une valeur initiale, parce que vous l'utilisez dans la clause where. –
C'est exactement ça, la clause where ne devrait pas être là. Erreur stupide. – themaninthesuitcase