Załóżmy, że mam kwerendy przechowywane w zmiennej tak (to faktycznie dynamicznie zaludnionych i bardziej skomplikowane, ale jest to dla celów demonstracyjnych):SQL „jeśli istnieje ...” dynamiczne zapytania
DECLARE @Query VARCHAR(1000) = 'SELECT * FROM dbo.MyTable'
Czy istnieje sposób sprawdzenia, czy zapytanie zwróci jakiekolwiek wyniki? Coś takiego, ale to nie działa:
IF EXISTS (@Query)
BEGIN
-- do something
END
Jedyny sposób, że mogę myśleć, aby to zrobić, aby umieścić wyniki w tabeli temp, a następnie zapytanie od tego, ale to nie jest idealny, ponieważ kolumny w kwerendzie dynamicznej mogą być różne i naprawdę nie potrzebuję tabeli tymczasowej w ogóle z jakiegokolwiek powodu poza sprawdzeniem, czy niektóre wiersze zostaną zwrócone. Czy istnieje lepszy sposób?
Następnie spróbuj z podzapytaniem EXISTS .... Zrób coś tam, gdzie istnieje (wybierz 1 z dbo.MyTable). Ostatecznie sprawdzasz tabelę, aby zrobić coś innego, gdy istnieją zapisy w tym stole. – knkarthick24
Podzapytowanie jest dynamiczne, przechowywane w zmiennej, jak pokazano powyżej. 'EXISTS' nie działa, gdy jest dynamiczny. – mayabelle