Установка переменной в T-SQL из запроса - PullRequest
0 голосов
/ 01 сентября 2011

Итак, у меня есть этот запрос:

select ens_use_new_models_bit from cfo_transaction
inner join dbo.cfo_trans_entity_rel on te_tr_transaction_id=tr_transaction_id
inner join cfo_tran_quote on tq_tr_transaction_id = tr_transaction_id
left outer join cfo_engine_sponsor on ens_rs_sponsor_id = te_co_re_entity_id
where te_rv_rel_type_id=713 and tq_tran_quote_id = 3

Возвращает значение bit, которое также может быть NULL. Я жестко запрограммировал 3 для тестирования, но на самом деле другой процесс передает это значение, но здесь это не важно.

Теперь в хранимом процессе мне нужно установить переменную, объявленную в процедуре:

SET @vRtn = NULL

в качестве строки - либо 'VBEngines', либо 'WFModels', либо оставьте ее NULL, если bit сверху вернет NULL.

'VBEngines', если bit выключен, 'WFModels', если bit включен.

Затем, после этого, мне нужно выполнить условие T-SQL для значения, чтобы увидеть, является ли оно NULL или нет. Как бы я это сделал? Я так плохо с SQL.

Спасибо.

Ответы [ 2 ]

2 голосов
/ 01 сентября 2011

Предполагая, что вам не нужно, чтобы само значение бита хранилось в переменной, поскольку это было всего лишь средством для достижения цели, тогда это должно быть сделано.

select @vRtn = case ens_use_new_models_bit
                 when 0 then 'VBEngines'
                 when 1 then 'WFModels'
               end /*Implicit Else NULL case*/
from   cfo_transaction ...

В случае 0 строк возвращается, присваивание не производится, поэтому @vRtn сохраняет свое начальное значение,

0 голосов
/ 01 сентября 2011
declare @newmodelsbit bit, @vRtn varchar(10)

select @newmodelsbit = ens_use_new_models_bit from cfo_transaction
inner join dbo.cfo_trans_entity_rel on te_tr_transaction_id=tr_transaction_id
inner join cfo_tran_quote on tq_tr_transaction_id = tr_transaction_id
left outer join cfo_engine_sponsor on ens_rs_sponsor_id = te_co_re_entity_id
where te_rv_rel_type_id=713 and tq_tran_quote_id = 3

if @newmodelsbit is null 
begin
 set @vRtn = null
end 
else
begin
 if @newmodelsbit = 1 --bit is on
 begin
   set @vRtn = 'WFModels'
 end
 else -- bit is off
  begin 
   set @vRtn = ' VBEngines'
  end 
 end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...