Переменная не устанавливается с помощью select - PullRequest
3 голосов
/ 28 июля 2010

У меня есть проблема, когда переменная не устанавливается с помощью оператора 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

Но когда я делаю select @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 ]

4 голосов
/ 28 июля 2010

Похоже, ваше предложение WHERE может помешать возвращению строки. Вы упомянули, что тестировали тот же SELECT без установки переменной, но код, который вы перечислили, не включает этот WHERE - так что это не то же самое.

Проверьте ваш SELECT с WHERE на месте, с фиктивными значениями (вероятно, NULL) и просмотрите. Звучит так, будто результат не возвращается.

0 голосов
/ 28 июля 2010

Вы устанавливаете @contract_id в операторе select, но затем также используете его в предложении where. Я бы подумал, что @contract_id будет null?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...