Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 存储过程如何满足空条件_Sql_Sql Server_Tsql_Stored Procedures - Fatal编程技术网

Sql 存储过程如何满足空条件

Sql 存储过程如何满足空条件,sql,sql-server,tsql,stored-procedures,Sql,Sql Server,Tsql,Stored Procedures,我正在读取一个文本文件作为输入,以执行存储过程中的逻辑以下是我的文本文件示例 <tblThreatenedSpeciesSubzone> <ThreatenedSpeciesZoneID>-1</ThreatenedSpeciesZoneID> <ManagementZoneID>0</ManagementZoneID> <TSSubZoneNumber>BR101_Moderate/Good_Medium

我正在读取一个文本文件作为输入,以执行存储过程中的逻辑以下是我的文本文件示例

<tblThreatenedSpeciesSubzone>
   <ThreatenedSpeciesZoneID>-1</ThreatenedSpeciesZoneID>
   <ManagementZoneID>0</ManagementZoneID>
   <TSSubZoneNumber>BR101_Moderate/Good_Medium_1</TSSubZoneNumber>
   <TSSubZoneArea>0</TSSubZoneArea>
   <AdjacentRemnantVegArea>23</AdjacentRemnantVegArea>
   <PatchArea>0</PatchArea>
   <CreatedBySystemUser>BBCC Training 1</CreatedBySystemUser>
   <UpdatedBySystemUser>BBCC Training 1</UpdatedBySystemUser>
   <SaveType>1</SaveType>
   <VegetationZoneID>-1</VegetationZoneID>
   <ManagementZoneName />
</tblThreatenedSpeciesSubzone>

根据您的RDBMS使用isnull()或coalesce()函数。i不再使用
@ManagementZoneIDInXML NULL
使用
@ManagementZoneIDInXML不为NULL
我只是更改为“IF ManagementZoneIDInXML>0且ManagementZoneIDInXML不为NULL”
IF @ManagementZoneIDInXML > 0 and @@ManagementZoneIDInXML <> NULL
BEGIN
    INSERT INTO @tblThreatenedSpeciesSubzone
                  (ThreatenedSpeciesZoneID,
                    ManagementZoneID,
                    VegetationZoneID,
                    TSSubZoneNumber,
                    TSSubZoneArea,
                    AdjacentRemnantVegArea,
                    PatchArea,
                    DateCreated,
                    CreatedBySystemUser,
                    DateUpdated,
                    UpdatedBySystemUser,
                    SaveType,
                    RowTimestamp)
    SELECT * 
    FROM OPENXML (@hDoc, '/NewDataSet/tblThreatenedSpeciesSubzone', 2)
    WITH (ThreatenedSpeciesZoneID INT,
          ManagementZoneID INT,
          VegetationZoneID INT,
          TSSubZoneNumber VARCHAR(50),
          TSSubZoneArea NUMERIC(9,2),
          AdjacentRemnantVegArea NUMERIC(9,2),
          PatchArea NUMERIC(9,2),
          DateCreated VARCHAR(50),
          CreatedBySystemUser VARCHAR(50),
          DateUpdated VARCHAR(50),
          UpdatedBySystemUser VARCHAR(50),
          SaveType INT,
          RowTimestamp VARCHAR(50)) XMLDATA
    WHERE 
        ManagementZoneID = @ManagementZoneIDInXML           --Only select the rows that belong to the supplied ManagementZoneID
END
ELSE 
BEGIN
    INSERT INTO @tblThreatenedSpeciesSubzone
                  ( ThreatenedSpeciesZoneID ,
                    ManagementZoneID    ,
                    VegetationZoneID    ,
                    TSSubZoneNumber         ,
                    TSSubZoneArea           ,
                    AdjacentRemnantVegArea  ,
                    PatchArea               ,
                    DateCreated             ,
                    CreatedBySystemUser     ,
                    DateUpdated             ,
                    UpdatedBySystemUser     ,
                    SaveType        ,
                    RowTimestamp            )
    SELECT * FROM OPENXML (@hDoc, '/NewDataSet/tblThreatenedSpeciesSubzone', 2)
    WITH            (   ThreatenedSpeciesZoneID INT         ,
                    ManagementZoneID    INT         ,
                    VegetationZoneID    INT     ,
                    TSSubZoneNumber         VARCHAR(50)     ,
                    TSSubZoneArea           NUMERIC(9,2)    ,
                    AdjacentRemnantVegArea  NUMERIC(9,2)    ,
                    PatchArea               NUMERIC(9,2)    ,
                    DateCreated             VARCHAR(50)     ,
                    CreatedBySystemUser     VARCHAR(50)     ,
                    DateUpdated             VARCHAR(50)     ,
                    UpdatedBySystemUser     VARCHAR(50) ,
                    SaveType        INT     ,
                    RowTimestamp            VARCHAR(50)     ) XMLDATA
    WHERE VegetationZoneID = @VegetationZoneIDInXML      --Only select the rows that belong to the supplied VegetationZoneID 
                                                         --And no Management zone assigned
END