2016-02-20 4 views
0

Я хочу вставить те значения, которые имеют версию null, а для версии null у меня нет статуса.Обновление хранимой процедуры

Я получаю все данные из datatable в тип таблицы процедур, а затем как я могу проверить, что входящие данные имеют версию null или нет?

SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 

ALTER PROCEDURE [dbo].[uspInsertFilterData] 
    @sqlDataTable SqlTableType READONLY 
AS 
BEGIN 
    IF (@sqlDataTable.Version IS NOT NULL OR @sqlDataTable.Version != '') 
    BEGIN 
     INSERT INTO FilterCombination (Version, HotFix, Resourcetype, Language) 
      (SELECT 
       t1.Product, t1.Version, t1.HotFix, t1.Resourcetype, 
       t1.Language 
      FROM 
       @sqlDataTable t1, Product_Version_Mapping t2 
      WHERE 
       t1.Product = t2.Product 
       AND t1.Version = t2.Version 
       AND t2.Status = 'Correct') 
    END 
    ELSE 
    BEGIN 
     INSERT INTO FilterCombination (Product, Version, HotFix, Resourcetype, Language) 
      (SELECT 
       t1.Product, t1.Version, t1.HotFix, t1.Resourcetype, t1.Language 
      FROM 
       @sqlDataTable t1, Product_Version_Mapping t2 
      WHERE 
       t1.Product = t2.Product); 
    END 
END 

Этот запрос не работает. Пожалуйста, помогите

+2

Трудно понять, чего вы хотите. Также, пожалуйста, расширьте текст «не работает». Это ничего нам не говорит. –

+0

Вы не указали свою проблему, но это подозрительно: '@sqlDataTable.Version не является NULL или @ sqlDataTable.Version! = '''. Я думаю, вам нужно 'AND' вместо' OR'. –

+0

Кроме того, первая вставка перечисляет ** четыре ** столбца в имени таблицы 'INSERT INTO', но вы предоставляете ** FIVE ** столбцы в' SELECT' ..... –

ответ

Смежные вопросы