-
MSSQL - 프로시저 내에 JSON Parameter 값을 Insert 하기IT/Database 2021. 9. 14. 15:33반응형
MSSQL 프로시저에 백엔드에서 보내는 JSON 파라미터를 이용하여 For문을 수행하여 Count 만큼 Insert 하는 내용을 작성하려고 합니다.
제가 사용하고 있는 Backend 언어는 Node.js입니다.
1. Node.js
1) MSSQL 프로시저 호출
2) 프로시저에 JSON 과 Count 파라미터 보내기 → JSON.stringfy() 이용해서 String으로 만들어서 보낼 것.
function test(json) { return new Promise(function (resolve, reject) { var connection = new Connection(dbconfig); connection.on('connect', function () { var request = new Request('exec testProc ' + @test_cnt = @test_cnt, @testJSON = @testJSON, function (err) { if (err) { reject(new Error(err)); } connection.close(); resolve(result); }); request.on('row', function (columns) { let queryResult = columns[0].value; if (queryResult > 0) { result = 1; } }); request.addParameter('test_cnt', Types.NVarChar, json.test_cnt); // jsonArray Length request.addParameter('testJSON', Types.NVarChar, JSON.stringify(json.testJSON)); // json Array connection.execSql(request); }); }); }
2. MSSQL 프로시저
설명 :
- JSON Array의 Value값을 For (While)문을 이용해 순차적으로 Insert
- JSON의 값을 가져오기 위해서 $[@i].id 만들기 위해 문자열을 조합
USE [****] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER procedure [dbo].[testProc] -- 파라미터로 받은 값 @testJSON NVARCHAR(MAX), -- JSON Array to String @test_cnt int -- JSON Array Length as begin DECLARE @i int DECLARE @id NVARCHAR(100) DECLARE @device NVARCHAR(100) DECLARE @variable_text NVARCHAR(100) DECLARE @variable_text_device NVARCHAR(100) DECLARE @variable_text_id NVARCHAR(100) DECLARE @jsonDataUserValue NVARCHAR(100) DECLARE @jsonDataDeviceValue NVARCHAR(100) set @i = 0 -- count 만큼 for문 실행 WHILE(@i < @test_cnt) BEGIN -- json parsing variable set @variable_text = N'$[' set @variable_text_device = N'].deviceid' set @variable_text_id = N'].user_uid' -- json Value Setting -- $[@i].id' -> i 번째의 id 값 가져올 수 있음. set @jsonDataUserValue = concat(@variable_text, @i, @variable_text_id) -- $[@i].id' set @jsonDataDeviceValue = concat(@variable_text, @i, @variable_text_device) -- $[@i].device' -- testJSON이라는 변수에 설정된 JSON 에서, $[@i].id 값을 가져오겠다는 구문 -- json Value Get set @id = JSON_VALUE(@testJSON, @jsonDataUserValue); set @device = JSON_VALUE(@testJSON, @jsonDataDeviceValue); -- insert insert into tblTest (deviceid, user_uid) values(@device, @id) -- i 증가 SET @i = @i + 1 END end
끝.
반응형'IT > Database' 카테고리의 다른 글
MySQL - MySQL 서버 접속시 2002 ERROR 이유와 해결방법 (3) 2020.06.02 댓글