【问题标题】:Stored Procedure Update存储过程更新
【发布时间】:2016-02-20 11:40:18
【问题描述】:

我想插入那些版本也为 null 并且版本为 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

此查询无效。请帮忙

【问题讨论】:

  • 很难理解你想要什么。还请扩展“不工作”。这并没有告诉我们任何事情。
  • 您没有具体说明您的问题,但这是可疑的:@sqlDataTable.Version is NOT NULL or @sqlDataTable.Version != ''。我认为您需要AND 而不是OR
  • 此外,第一个插入列出了您的 INSERT INTO 表名中的 列,但您在 SELECT 中提供了 列。 ...

标签: asp.net stored-procedures sql-server-2005


【解决方案1】:

为了检查空值,你可以像这样使用 NULLIF...

IF NULLIF(@PreviousStartDate, '') IS NULL

请参考以下链接。

Check if a parameter is null or empty in a stored procedure

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-20
    • 2021-07-18
    • 1970-01-01
    • 2018-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多