Sunday, August 17, 2014

JSON string as stored proc parameter

Thanks to the article converts a JSON string into a table, I am able to send JSON directly to Stored Proc as input param:



ALTER PROCEDURE [XXXXXX].[xxx_xxx_xxxxxxx]
@SearchCriteria NVARCHAR(max)

AS


---------------------------
-- EF use for Dynamic SQL
---------------------------
IF ( @SearchCriteria IS NULL )
BEGIN
      SELECT
          CAST(NULL AS NVARCHAR(5) ) AS Category,
            CAST(NULL AS NVARCHAR(100)) AS FinancialInstitution,
            CAST(NULL AS NVARCHAR(50)) AS CompanyType,
            CAST(NULL AS NVARCHAR(10)) AS Redeemable,
            CAST(NULL AS NVARCHAR(10)) AS CompoundFreq,
            CAST(NULL AS NVARCHAR(10)) AS PaymentFreq,
            CAST(NULL AS DECIMAL(12,2)) AS MinAmount,
            CAST(NULL AS DECIMAL(12,2) ) AS MaxAmount,
            CAST(NULL AS DECIMAL(5,2)) AS TERM,
            CAST(NULL AS DECIMAL(8,4) ) AS Rate
END

BEGIN



DECLARE @termVal DECIMAL(5,2);
DECLARE @termDY NVARCHAR(300);
DECLARE @termDYSelectedTogether NVARCHAR(400) = '';
--TermTarget
DECLARE @termTarget NVARCHAR(5) = '';

DECLARE @minDeposit NVARCHAR(200);
DECLARE @minDepositSelectedTogether NVARCHAR(260) = '';




DECLARE @interestRate DECIMAL(8,4);
DECLARE @companySelected NVARCHAR(max) ;
DECLARE @companySelectedTogether NVARCHAR(max) = '';

DECLARE @companyTypeSelected NVARCHAR(max) ;
DECLARE @companyTypeSelectedTogether NVARCHAR(max) = '';

DECLARE @redeemSelected NVARCHAR(25) ;
DECLARE @redeemSelectedTogether NVARCHAR(25) = '';

DECLARE @taxIndicatorSelected NVARCHAR(25) ;
DECLARE @taxIndicatorSelectedTogether NVARCHAR(25) = '';

DECLARE @compoundFreqSelected NVARCHAR(50) ;
DECLARE @compoundFreqSelectedTogether NVARCHAR(50) = '';
DECLARE @PaymtFreqSelected NVARCHAR(80) ;
DECLARE @PaymtFreqSelectedTogether NVARCHAR(80) = '';
DECLARE @tbl TABLE
( id int, name NVARCHAR(255), value NVARCHAR(max),  errcnt int,msg varchar(8000)
);

INSERT INTO
      @tbl
SELECT
      id,
      name,
      value,
      errcnt,
      msg
FROM
      dbo.fn_SplitJson2(@SearchCriteria,null);


------------------------------
--Term
------------------------------

SELECT
      @termTarget = value
FROM
      @tbl
WHERE
      name = 'TermTarget'

IF @termTarget <> ''
BEGIN
      SELECT
            @termVal = value
      FROM
            @tbl
      WHERE
            name = 'Months'
END
ELSE
BEGIN
      SELECT
            @termDY = value
      FROM
            @tbl
      WHERE
            name = 'Months'


      --@termDYSelectedTogether
      IF @termDY <> 'ALL'
      BEGIN
      IF @termDY <> ''
        BEGIN
                  SELECT
                  @termDYSelectedTogether=
                     CASE WHEN COALESCE(@termDYSelectedTogether,'')=''
                        THEN  QUOTENAME(value,'''')
                        ELSE  @termDYSelectedTogether+',' + QUOTENAME(value,'''')
                     END
                  FROM
                  dbo.fn_SplitJson2(
                  @termDY,NULL
                  )
        END
        ELSE
         BEGIN
            SELECT @termDYSelectedTogether= ''
         END
      END

END
------------------------------
--Deposit
------------------------------
SELECT
      @minDeposit = value
FROM
      @tbl
WHERE
      name = 'Deposit'


IF @minDeposit <> 'ALL'
BEGIN
IF @minDeposit <> ''
  BEGIN
            SELECT
            @minDepositSelectedTogether=
               CASE WHEN COALESCE(@minDepositSelectedTogether,'')=''
                  THEN  QUOTENAME(value,'''')
                  ELSE  @minDepositSelectedTogether+',' + QUOTENAME(value,'''')
               END
            FROM
            dbo.fn_SplitJson2(
            @minDeposit,NULL
            )
  END
  ELSE
   BEGIN
      SELECT @minDepositSelectedTogether= ''
   END
END



------------------------------
--Rate
------------------------------
SELECT
      @interestRate = value
FROM
      @tbl
WHERE
      name = 'Rate'

.......
.......

No comments:

Post a Comment