【问题标题】:SQL Server Insert querySQL Server 插入查询
【发布时间】:2016-05-06 12:49:35
【问题描述】:

这是我的问题的简化版本。我在下面有 2 张桌子

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

当我得到一些值时,我需要一个插入查询,它将数据插入到相关字段中。例如数量是整数,所以我需要将该产品插入到产品信息表中,并且只填充 isInteger 字段

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

【问题讨论】:

  • 那么这里的实际问题是什么?
  • 请google并了解SQL中的INSERT命令。
  • 使用 SELECT 插入。编写一个选择,返回插入所需的列,连接到类型表并为文本、整数、小数列使用 CASE。测试并让查询正常工作,然后在选择前加上 INSERT INTO YourTable (col1, col2,...) 前缀,你就完成了。

标签: sql-server sql-insert


【解决方案1】:

这会奏效。创建一个接受所有参数的存储过程。然后,只需传递 NULL 值。例如,要仅插入“Column3”,您可以调用:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-20
    • 2013-03-14
    • 1970-01-01
    相关资源
    最近更新 更多