2016-05-06 106 views
-3

这是我的问题的简化版本。下面我有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 

当我得到一些值,我需要插入查询将在初步认识字段中插入数据2个表。例如数量是整数,所以我需要将该产品插入产品信息表,并只填充isIntegerfield

如何创建一个动态插入查询来填充正确的字段而不是拧出4个单独的插入(istext,isInteger,isBoolean ,isDecimal)与where istext = 1子句

+1

那么,什么是这里的实际问题? –

+1

请谷歌和了解SQL中的INSERT命令。 –

+0

用SELECT进行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