2015-08-13 3 views
2
declare @qry varchar(100) 
declare @cnt int 
set @qry = ' where ' 

if exists(select * from ARTICLE_MANAGE [email protected]+ article_id=65) 
BEGIN 
select top 1* from ARTICLE_MANAGE order by article_id desc 
END 
ELSE 
BEGIN 
select * from ARTICLE_MANAGE order by article_id desc 
END 

Это вопрос. «@qry» изменяется, что мы перешли на запросКак выполнить запрос sub, если существует условие?

+0

Использование динамического SQL –

+0

жаль, что я не могу получить его. –

+0

См [SQL «если существует ...» динамический запрос] [1] или [TSQL - Попытка использовать переменную IF EXISTS() Функция для простого SP] [2] [1]: http://stackoverflow.com/questions/27710260/sql-if-exists-dynamic-query [2]: http://stackoverflow.com/questions/14073842/tsql-trying-to -use-variable-with-if-exists-function-for-simple-sp – Esty

ответ

2
DECLARE @qry VARCHAR(100); 
DECLARE @cnt INT; 
set @qry = ' where ' 
DECLARE @ExeQuery VARCHAR(MAX); 
SET @ExeQuery='if exists(select * from ARTICLE_MANAGE '[email protected]+' article_id=65) 
BEGIN 
select top 1* from ARTICLE_MANAGE order by article_id desc 
END 
ELSE 
BEGIN 
select * from ARTICLE_MANAGE order by article_id desc 
END' 
EXEC(@ExeQuery) 
+0

Это прекрасно работает .. это точное решение, что я ищу .. спасибо RAJ .. :) –

1

Здесь вы строите dynamic sql и EXISTS пределы только subquery.

Вы можете иметь функциональность EXISTS с count(*)

declare @qry varchar(100) 
declare @cnt int 
set @qry = ' where ' 

declare @sql_qry nvarchar(1000) 
set @sql_qry = 'select @Cnt = COUNT(*) from ARTICLE_MANAGE' + @qry + 'article_id=65' 

DECLARE @Count AS INT 
EXEC sp_executesql @Query, N'@Cnt INT OUTPUT', @[email protected] OUTPUT 

if exists(@Count > 0) BEGIN 
    select top 1* from ARTICLE_MANAGE order by article_id desc 
END 
ELSE BEGIN 
    select * from ARTICLE_MANAGE order by article_id desc 
END 
+0

Спасибо, что прощай за свою помощь. –