Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.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 - Fatal编程技术网

Sql 如何在存储过程中传递常量值

Sql 如何在存储过程中传递常量值,sql,Sql,我在存储过程中有以下语句: INSERT INTO @tblThreatenedSpeciesSubzone (ThreatenedSpeciesZoneID, ManagementZoneID, VegetationZoneID) SELECT * FROM OPENXML (@hDoc, '/NewDataSet/tblThreatenedSpeciesSubzone

我在存储过程中有以下语句:

INSERT INTO @tblThreatenedSpeciesSubzone
                  (ThreatenedSpeciesZoneID,
                   ManagementZoneID,
                   VegetationZoneID)
   SELECT * 
   FROM OPENXML (@hDoc, '/NewDataSet/tblThreatenedSpeciesSubzone', 2)
   WITH (ThreatenedSpeciesZoneID INT,
         ManagementZoneID INT,
         VegetationZoneID INT) XMLDATA
   WHERE VegetationZoneID = @VegetationZoneIDInXML      
有时“managementZone id”变为null,我想替换它,如果它为null,那么我想传递常量值“0”。有办法吗?

不确定“传递常量值”,但您可以始终设置默认值:

CREATE PROCEDURE Sales.uspGetSalesYTD
@SalesPerson nvarchar(50) = 'Andersson'  -- default value
AS 
因此:


您可以在select语句中使用合并

INSERT INTO @tblThreatenedSpeciesSubzone
                  ( ThreatenedSpeciesZoneID ,
                    ManagementZoneID        ,
                    VegetationZoneID        
                    )
    SELECT 
          ThreatenedSpeciesZoneID ,
          COALESCE(ManagementZoneID,0)        ,
          VegetationZoneID 
    FROM OPENXML (@hDoc, '/NewDataSet/tblThreatenedSpeciesSubzone', 2)
    WITH            (   ThreatenedSpeciesZoneID INT         ,
                    ManagementZoneID            INT         ,
                    VegetationZoneID            INT             ) XMLDATA
    WHERE VegetationZoneID = @VegetationZoneIDInXML    

无法在我的存储过程中执行此操作,我在存储过程中有带和不带管理id的条件,因此我可能有一些timeOk值。是否可以使用显式选择而不是*?如果是这样的话,您可以使用ISNULL()谢谢Mackan,我从前端而不是后端处理这个问题来解决这个问题这是用于哪个RDBMS的?请添加一个标记,以指定您使用的是
mysql
postgresql
sqlserver
oracle
还是
db2
——或者其他完全不同的东西。
INSERT INTO @tblThreatenedSpeciesSubzone
                  ( ThreatenedSpeciesZoneID ,
                    ManagementZoneID        ,
                    VegetationZoneID        
                    )
    SELECT 
          ThreatenedSpeciesZoneID ,
          COALESCE(ManagementZoneID,0)        ,
          VegetationZoneID 
    FROM OPENXML (@hDoc, '/NewDataSet/tblThreatenedSpeciesSubzone', 2)
    WITH            (   ThreatenedSpeciesZoneID INT         ,
                    ManagementZoneID            INT         ,
                    VegetationZoneID            INT             ) XMLDATA
    WHERE VegetationZoneID = @VegetationZoneIDInXML