0

У меня есть таблица, которая является фидом из другой базы данных, которую вытаскивают. Зачастую таблицы исходной базы данных не заполняются, так как фиды не работают. То, что я хотел бы сделать, просто выполнить подсчет количества записей в исходных таблицах базы данных, чтобы убедиться, что они заполнены, прежде чем вытаскивать фиды данных, поскольку в этом случае данные, которые являются устаревшими, лучше, чем все данные отсутствуют. Я делал это в других базах данных, но я не уверен, как выполнить это в Microsoft SQL 2008.MS SQL: выполнить усечение, если число записей превышает N

Вот макет того, что я пытаюсь получить работу, что в конечном итоге будет введен в запланированном прок:

CASE 
    WHEN 
     (SELECT COUNT(PC.id) FROM [server08].[db01].[dbo].[tblesrc01] PC) > 9000 
    THEN 
     TRUNCATE TABLE DartDB.dbo.assets_feed; 
     INSERT INTO tbl_feed 
     (
       id,name,amt,row_updated 
     ) 
     SELECT 
       Q.PK_ID AS id 
      , Q.fullname AS name 
      , Q.cost AS amt 
      , SYSDATETIME() AS row_updated 

     FROM [server08].[db01].[dbo].[tblesrc01] Q; 
    ELSE 
END 

Является ли случай неуместным для этой цели или есть что-то, что я пропустил?

+0

Вы можете использовать 'IF' и сделать это, как' IF (условие) Начинайте СТВОЛА. ... END'. – user2989408

ответ

1

В SQL Server вы можете сделать это в хранимой процедуре, используя конструкцию IF... ELSE.
Вот MSDN documentation, который объясняет, как использовать конструкцию ...

Ваш прок должен выглядеть

IF ((SELECT COUNT(PC.id) FROM [server08].[db01].[dbo].[tblesrc01] PC) > 9000) 
    BEGIN 
     TRUNC ... 
     INSERT ... 
    END 
Смежные вопросы