Вот упрощенная версия хранимой процедуры, которую я пытаюсь написать в SQL Server 2005.
У меня такой вопрос:
Я объявил переменную @docid
, для которой яЯ хочу назначить результаты запроса, когда я перебираю курсор, если нет точного совпадения, тогда я хочу выполнить другой запрос и попытаться найти следующее наилучшее совпадение.
Я попытался вставить тестчто говорит IF @docid IS NULL then BEGIN [second query]
.Это не работает, поскольку переменная @docid
не будет Null
, она просто сохранит предыдущее значение, пока не будут выполнены условия для первого запроса, и ей не будет присвоено новое значение.
Итак, как я могу сказать: «Если я пытаюсь присвоить docid переменной @docid, но нет совпадения на основе условий в запросе, тогда вместо этого запускаем следующий запрос или set @docid=''"
? Любая помощь»будет признателен. Спасибо
declare @docid bigint,
@account varchar(30)
While @@fetch_status=0
BEGIN
Select @Docid=Docid
FROM printdata
WHERE Account=@account
IF @docid Is Null --Docid Is never Null once assigned a value
BEGIN
Select @Docid=Docid
FROM printdata
WHERE balance=@balance
END