How can i convert ALL JSON fields [nvarchar(max)] from TableJSON to XML fileds in TableXML when TableJSON Update or Inserted.(TRIGGER)
TableJSON indludes 100 JSON fileds [type: nvarchar(max)].
Get all nvarchar(max) files:
DECLARE @COLUMN_NAME nvarchar(max) SELECT @COLUMN_NAME = COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'TableJSON' AND DATA_TYPE LIKE 'nvarchar' AND CHARACTER_MAXIMUM_LENGTH = -1 --NVARCHAR(MAX) Convert JSON to XML: https://www.simple-talk.com/sql/t-sql-programming/consuming-json-strings-in-sql-server/
TableJSON: ID bigint, Code char(10), Field1 nvarchar(max), ... Field100 nvarchar(max) TableXML: ID bigint, Code char(10), Field1 xml, ... Field100 xml MY TRIGGER: Only for Field1
USE [MyDatabase] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER TRIGGER [dbo].[UpdateXMLTable] ON [dbo].[TableJSON] AFTER INSERT, UPDATE AS BEGIN DECLARE @ID bigint DECLARE @Field1 nvarchar(max) DECLARE @MyHierarchy Hierarchy,@Field1XML XML SELECT @ID = ID, @Field1 = Field1 FROM INSERTED INSERT INTO @myHierarchy SELECT * FROM parseJSON(@Field1) SELECT dbo.ToXML(@MyHierarchy) SET @Field1XML = dbo.ToXML(@MyHierarchy) IF NOT EXISTS(SELECT 1 FROM [dbo].[TableXML] WHERE ID = @ID) INSERT INTO [dbo].[TableXML] (ID, Field1) VALUES (@ID, @Field1XML) ELSE IF (UPDATE (Field1)) UPDATE [dbo].[TableXML] SET Field1 = @Field1XML WHERE ID = @ID END How can i convert ALL JSON fields [nvarchar(max)] from TableJSON to XML fileds in TableXML when TableJSON Update or Inserted.(TRIGGER)
No comments:
Post a Comment