2017-05-05 58 views
0

我有以下存储过程。JSON导入的MS SQL存储过程 - 检查输入是否存在

但是,如果“X-Forwarded-For”为空,我想检索“remote_address”。

我该怎么做?

CREATE PROCEDURE dbo.Table(@payload NVARCHAR(MAX)) 
WITH ENCRYPTION 
AS  
    SET NOCOUNT ON; 
    IF (ISJSON(@payload) != 1) THROW 50001, 'JSON data expected', 1; 

    INSERT INTO dbo.Table(IP,Time) 
    SELECT JSONData.IP, getdate() 
    FROM OPENJSON (@payload) 
      WITH ( 
       IP  varchar(50) N'$.request.headers."X-Forwarded-For"' 
      ) 
    AS JSONData; 
GO 

远程地址的行看起来像:

   IP  varchar(50) N'$.transaction.remote_address' 

回答

1
SELECT COALESCE(JSONData.XForwardedForIP, JSONData.RemoteAddressIP), getdate() 
FROM OPENJSON (@payload) 
     WITH ( 
      XForwardedForIP varchar(50) N'$.request.headers."X-Forwarded-For"', 
      RemoteAddressIP varchar(50) N'$.transaction.remote_address' 
     ) 
AS JSONData; 
+0

哦!我喜欢这样的表情:D我只是在外面吃午饭,所以今天下午考试。谢谢! – Marcus

相关问题