2016-05-06 6 views
-3

Это упрощенная версия моей проблемы. У меня есть 2 таблицы нижеSQL Server Вставить запрос

ProductInformtaionType 

ProductInformationTypeID Name  isText isInteger isDecimal is Boolean 
1       barcode 1  0   0  0 
2       Vatable 0  0   0  1 
3       Quantity 0  1   0  0 

и

ProductInformtaion 

ProductInformtaion ProductID ProductInformtaionTypeID ValueText ValueInteger ValueDecimal 

когда я получаю некоторые значения мне нужно запрос вставки, который будет вставлять данные в relavant поле. например, количество является целым числом, поэтому мне нужно вставить этот продукт в таблицу информации о продукте и только заполнить isIntegerfield

Как создать динамический запрос вставки, который заполняет правильное поле вместо того, чтобы отжимать 4 отдельных вставки для (istext, isInteger, isBoolean , isDecimal) с текстом wheretext = 1

+1

Так что настоящий вопрос здесь? –

+1

Пожалуйста, google и узнайте о команде INSERT в SQL. –

+0

INSERT с SELECT. Напишите выбор, который возвращает нужный столбец для вставки, присоединяется к таблице типов и использует CASE для текстовых, целых, десятичных столбцов. проверьте и запустите запрос, затем префикс, который выбирает с помощью 'INSERT INTO YourTable (col1, col2, ...)', и вы закончили. –

ответ

0

Это будет работать. Сделайте хранимую процедуру, которая принимает все параметры. Затем просто передайте его значения NULL. Например, чтобы вставить только 'колонка3', вы могли бы назвать:

Exec dbo.[Test_Stored_Procedure] @Column3 = 'hey!!!' 

В качестве альтернативы, вы можете сделать:

Exec dbo.[Test_Stored_Procedure] @Column1 = null, @Column2 = null, @Column3 = 'hey!!!', @Column4 = null 

Вот код хранимой процедуры:

CREATE PROCEDURE [dbo].[Test_Stored_Procedure] 
    @Column1 varchar(50) = null, 
    @Column2 varchar(50) = null, 
    @Column3 varchar(50) = null, 
    @Column4 varchar(50) = null 
AS 
BEGIN 
    INSERT INTO YourTable 
    VALUES 
    (@Column1, @Column2, @Column3, @Column4) 
END 
Смежные вопросы