[{"data":1,"prerenderedAt":97},["ShallowReactive",2],{"integration-node-red-contrib-mssql-plus\u002F":3},{"_id":4,"categories":5,"author":9,"description":11,"npmOwners":12,"npmScope":15,"name":4,"ffCertified":16,"downloads":17,"version":19,"updatedAt":20,"tier":21,"maintainers":22,"homepage":27,"bugs":28,"repository":30,"time":33,"lastUpdated":20,"created":34,"license":82,"githubOwner":13,"githubRepo":4,"examples":83,"readme":96},"node-red-contrib-mssql-plus",[6,7,8],"catalogue_database","catalogue_storage","catalogue",{"name":10},"Redconnect.io","A node-red node to execute queries, stored procedures and bulk inserts in Microsoft SQL Server and Azure Databases SQL2000 ~ SQL2022",[13,14],"bestlong","steve-mcl",null,true,{"week":18},3950,"0.13.1","2025-05-16T08:31:25.722Z","recommended",[23,25],{"name":13,"email":24},"bestlong168@gmail.com",{"name":14,"email":26},"sdmclaughlin+npm@gmail.com","https:\u002F\u002Fgithub.com\u002Fbestlong\u002Fnode-red-contrib-mssql-plus",{"url":29},"https:\u002F\u002Fgithub.com\u002Fbestlong\u002Fnode-red-contrib-mssql-plus\u002Fissues",{"type":31,"url":32},"git","git+https:\u002F\u002Fgithub.com\u002Fbestlong\u002Fnode-red-contrib-mssql-plus.git",{"created":34,"modified":20,"0.0.7":35,"0.0.8":36,"0.0.9":37,"0.0.10":38,"0.0.11":39,"0.0.12":40,"0.0.13":41,"0.0.14":42,"0.1.0":43,"0.2.1":44,"0.3.0":45,"0.3.2":46,"0.3.3":47,"0.4.0":48,"0.4.1":49,"0.4.2":50,"0.4.3":51,"0.4.4":52,"0.5.0-beta.1":53,"0.5.0-beta.2":54,"0.5.0":55,"0.5.1":56,"0.6.1":57,"0.7.0-beta.1":58,"0.7.0-beta.2":59,"0.6.2":60,"0.7.0-beta.3":61,"0.6.3":62,"0.6.4":63,"0.7.0-beta.4":64,"0.7.0":65,"0.7.1":66,"0.7.2":67,"0.7.3":68,"0.8.0":69,"0.9.0":70,"0.9.1":71,"0.10.0":72,"0.10.1":73,"0.10.2":74,"0.11.0-beta":75,"0.11.0":76,"0.12.0":77,"0.12.1":78,"0.12.2":79,"0.12.3":80,"0.13.1":81},"2018-04-24T09:53:16.410Z","2018-04-24T09:53:16.709Z","2018-08-16T07:26:29.281Z","2018-08-16T08:45:33.154Z","2018-08-16T11:39:13.264Z","2018-08-16T12:42:02.260Z","2018-08-19T06:00:39.313Z","2018-11-22T04:28:05.864Z","2018-11-22T06:13:01.584Z","2019-02-24T13:45:48.707Z","2019-07-24T13:31:04.862Z","2019-08-03T11:27:21.409Z","2019-12-16T09:21:41.383Z","2020-01-17T09:12:03.220Z","2020-03-02T10:55:50.694Z","2020-04-23T11:44:53.485Z","2020-04-23T13:08:34.419Z","2020-04-24T18:25:22.123Z","2020-05-11T11:39:41.730Z","2020-07-19T20:35:35.025Z","2020-07-29T10:16:25.422Z","2020-08-15T14:52:52.460Z","2020-08-25T11:46:19.130Z","2020-10-23T15:45:08.936Z","2020-12-11T01:30:23.087Z","2020-12-11T02:37:48.489Z","2020-12-11T15:05:24.157Z","2020-12-15T15:54:10.290Z","2021-01-17T12:53:21.085Z","2021-01-18T22:04:09.892Z","2021-03-04T23:05:03.523Z","2021-05-11T12:14:47.363Z","2021-05-23T13:31:06.500Z","2021-07-23T11:16:26.813Z","2021-07-29T07:43:33.975Z","2023-01-16T15:01:15.243Z","2023-01-17T15:40:51.305Z","2023-01-18T02:02:32.632Z","2023-02-07T13:42:46.199Z","2023-02-10T07:44:44.740Z","2023-02-10T08:59:38.587Z","2023-09-13T05:57:07.739Z","2023-09-18T15:46:27.688Z","2023-10-01T03:06:03.410Z","2023-10-06T01:16:02.119Z","2024-02-19T02:53:36.857Z","2025-05-16T07:16:49.684Z","2025-05-16T08:31:25.545Z","MIT",[84,90],{"name":85,"path":86,"url":87,"downloadUrl":88,"flow":89},"Bulk demo","examples\u002FBulk demo.json","https:\u002F\u002Fgithub.com\u002Fbestlong\u002Fnode-red-contrib-mssql-plus\u002Fblob\u002Fmaster\u002Fexamples\u002FBulk%20demo.json","https:\u002F\u002Fraw.githubusercontent.com\u002Fbestlong\u002Fnode-red-contrib-mssql-plus\u002Fmaster\u002Fexamples\u002FBulk%20demo.json","[{\"id\":\"adf228cf.156ef8\",\"type\":\"inject\",\"z\":\"403d67ed1c8bce92\",\"name\":\"\",\"props\":[{\"p\":\"payload\"},{\"p\":\"topic\",\"vt\":\"str\"}],\"repeat\":\"\",\"crontab\":\"\",\"once\":false,\"onceDelay\":0.1,\"topic\":\"rows\",\"payload\":\"1000\",\"payloadType\":\"num\",\"x\":560,\"y\":1220,\"wires\":[[\"d136ada3.dc6ca\"]]},{\"id\":\"d136ada3.dc6ca\",\"type\":\"function\",\"z\":\"403d67ed1c8bce92\",\"name\":\"generate data\",\"func\":\"\u002F\u002F Table fields...\\n\u002F\u002F IP, Name, Timestamp, Param_Name, Param_Value\\n\\nlet IP = \\\"1.2.3.4\\\";\\nlet Name = \\\"fake_device\\\";\\nlet now = (new Date()).toISOString(); \u002F\u002Fgenerate a timestamp\\nmsg.bulk_data_to_insert = []; \u002F\u002Fthe msg property we will use to pass the data array to the MSSQL node\\n\\n\u002F\u002Fgenerate fake data rows of data in the following format...\\n\u002F*\\n[\\n    [col1, col2, coln... ], \u002F\u002Frow 1\\n    [col1, col2, coln... ], \u002F\u002Frow 2\\n    [col1, col2, coln... ], \u002F\u002Frow n\\n]\\n*\u002F\\nif (msg.topic == \\\"rows\\\") {\\n    for (let x = 1; x \\u003c= msg.payload; x++) {\\n        msg.bulk_data_to_insert.push([\\n            IP, Name, now, `P${x + 1000}`, Math.random()\\n        ]);\\n    }\\n} else {\\n    for (let x = 1; x \\u003c= msg.payload; x++) {\\n        msg.bulk_data_to_insert.push({\\n            IP: IP, \\n            Name: Name, \\n            Timestamp: now, \\n            Param_Name: `P${x + 1000}`,\\n            Param_Value: Math.random()\\n        });\\n    }\\n}\\n\\nreturn msg;\",\"outputs\":1,\"noerr\":0,\"initialize\":\"\",\"finalize\":\"\",\"x\":780,\"y\":1220,\"wires\":[[\"cb72c16f.a181e\",\"9913e507.15f5c8\"]]},{\"id\":\"cb72c16f.a181e\",\"type\":\"debug\",\"z\":\"403d67ed1c8bce92\",\"name\":\"Bulk Data to insert\",\"active\":true,\"tosidebar\":true,\"console\":false,\"tostatus\":false,\"complete\":\"bulk_data_to_insert\",\"targetType\":\"msg\",\"statusVal\":\"\",\"statusType\":\"auto\",\"x\":1130,\"y\":1220,\"wires\":[]},{\"id\":\"9913e507.15f5c8\",\"type\":\"MSSQL\",\"z\":\"403d67ed1c8bce92\",\"mssqlCN\":\"8d9d212a.cea03\",\"name\":\"bulk insert -\\u003e demo_device_parameters_table\",\"outField\":\"payload\",\"returnType\":\"0\",\"throwErrors\":1,\"query\":\"demo_device_parameters_table\",\"modeOpt\":\"\",\"modeOptType\":\"bulk\",\"queryOpt\":\"\",\"queryOptType\":\"editor\",\"paramsOpt\":\"\",\"paramsOptType\":\"editor\",\"rows\":\"bulk_data_to_insert\",\"rowsType\":\"msg\",\"parseMustache\":false,\"params\":[{\"output\":false,\"name\":\"IP\",\"type\":\"NVarChar(200)\",\"valueType\":\"msg\",\"value\":\"payload\",\"options\":{\"nullable\":true,\"primary\":false,\"identity\":false,\"readOnly\":false}},{\"output\":false,\"name\":\"Name\",\"type\":\"NVarChar(200)\",\"valueType\":\"num\",\"value\":\"0\",\"options\":{\"nullable\":true,\"primary\":false,\"identity\":false,\"readOnly\":false}},{\"output\":false,\"name\":\"Timestamp\",\"type\":\"NVarChar(200)\",\"valueType\":\"num\",\"value\":\"0\",\"options\":{\"nullable\":true,\"primary\":false,\"identity\":false,\"readOnly\":false}},{\"output\":false,\"name\":\"Param_Name\",\"type\":\"NVarChar(200)\",\"valueType\":\"num\",\"value\":\"0\",\"options\":{\"nullable\":true,\"primary\":false,\"identity\":false,\"readOnly\":false}},{\"output\":false,\"name\":\"Param_Value\",\"type\":\"Float\",\"valueType\":\"num\",\"value\":\"0\",\"options\":{\"nullable\":true,\"primary\":false,\"identity\":false,\"readOnly\":false}}],\"x\":920,\"y\":1260,\"wires\":[[\"1af45092.0fc77f\"]]},{\"id\":\"1af45092.0fc77f\",\"type\":\"debug\",\"z\":\"403d67ed1c8bce92\",\"name\":\"Bulk Insert Result\",\"active\":true,\"tosidebar\":true,\"console\":false,\"tostatus\":false,\"complete\":\"payload\",\"targetType\":\"msg\",\"statusVal\":\"\",\"statusType\":\"auto\",\"x\":1130,\"y\":1300,\"wires\":[]},{\"id\":\"3344173.094bde8\",\"type\":\"inject\",\"z\":\"403d67ed1c8bce92\",\"name\":\"\",\"props\":[{\"p\":\"payload\"},{\"p\":\"topic\",\"vt\":\"str\"}],\"repeat\":\"\",\"crontab\":\"\",\"once\":false,\"onceDelay\":0.1,\"topic\":\"rows\",\"payload\":\"10000\",\"payloadType\":\"num\",\"x\":570,\"y\":1260,\"wires\":[[\"d136ada3.dc6ca\"]]},{\"id\":\"378a591d.b0ce76\",\"type\":\"inject\",\"z\":\"403d67ed1c8bce92\",\"name\":\"\",\"props\":[{\"p\":\"payload\"},{\"p\":\"topic\",\"vt\":\"str\"}],\"repeat\":\"\",\"crontab\":\"\",\"once\":false,\"onceDelay\":0.1,\"topic\":\"objects\",\"payload\":\"2000\",\"payloadType\":\"num\",\"x\":570,\"y\":1300,\"wires\":[[\"d136ada3.dc6ca\"]]},{\"id\":\"4de6a61.bbf2458\",\"type\":\"MSSQL\",\"z\":\"403d67ed1c8bce92\",\"mssqlCN\":\"8d9d212a.cea03\",\"name\":\"Create demo_device_parameters_table\",\"outField\":\"payload\",\"returnType\":\"1\",\"throwErrors\":1,\"query\":\"\\r\\nSET ANSI_NULLS ON\\r\\nSET QUOTED_IDENTIFIER ON\\r\\n\\r\\nCREATE TABLE [dbo].[demo_device_parameters_table](\\r\\n    [ID] int not null identity(1,1),\\t\\r\\n    [IP] nvarchar(200) NULL,\\r\\n    [Name] nvarchar(200) NULL,\\r\\n    [Timestamp] nvarchar(200) NULL,\\r\\n    [Param_Name] nvarchar(200) NULL,\\r\\n    [Param_Value] float NULL\\r\\n) ON [PRIMARY]\",\"modeOpt\":\"\",\"modeOptType\":\"query\",\"queryOpt\":\"\",\"queryOptType\":\"editor\",\"paramsOpt\":\"\",\"paramsOptType\":\"none\",\"rows\":\"rows\",\"rowsType\":\"msg\",\"parseMustache\":false,\"params\":[],\"x\":800,\"y\":1140,\"wires\":[[\"c173bd82.e50f7\"]]},{\"id\":\"4fe9670.507ad98\",\"type\":\"inject\",\"z\":\"403d67ed1c8bce92\",\"name\":\"Start\",\"props\":[{\"p\":\"payload\"},{\"p\":\"topic\",\"vt\":\"str\"}],\"repeat\":\"\",\"crontab\":\"\",\"once\":false,\"onceDelay\":0.1,\"topic\":\"\",\"payload\":\"\",\"payloadType\":\"str\",\"x\":550,\"y\":1140,\"wires\":[[\"4de6a61.bbf2458\"]]},{\"id\":\"c173bd82.e50f7\",\"type\":\"debug\",\"z\":\"403d67ed1c8bce92\",\"name\":\"Table creation\",\"active\":true,\"tosidebar\":true,\"console\":false,\"tostatus\":false,\"complete\":\"true\",\"targetType\":\"full\",\"statusVal\":\"\",\"statusType\":\"auto\",\"x\":1120,\"y\":1140,\"wires\":[]},{\"id\":\"6347054e.31519c\",\"type\":\"comment\",\"z\":\"403d67ed1c8bce92\",\"name\":\"1. Open the MSSQL node and set up the connection to your SQL Server\",\"info\":\"\",\"x\":730,\"y\":920,\"wires\":[]},{\"id\":\"47b777cb.bf8488\",\"type\":\"comment\",\"z\":\"403d67ed1c8bce92\",\"name\":\"2. Click the \\\"Start\\\" Inject to create the table\",\"info\":\"\",\"x\":640,\"y\":960,\"wires\":[]},{\"id\":\"ee216795.b3ed88\",\"type\":\"comment\",\"z\":\"403d67ed1c8bce92\",\"name\":\"3. Click any of the \\\"rows: xxxx\\\" Injects to perform a Bulk Insert\",\"info\":\"\",\"x\":700,\"y\":1000,\"wires\":[]},{\"id\":\"f8125aa3.1029b8\",\"type\":\"comment\",\"z\":\"403d67ed1c8bce92\",\"name\":\"4. Click \\\"Get Data\\\" Inject to select data from the table\",\"info\":\"\",\"x\":670,\"y\":1040,\"wires\":[]},{\"id\":\"29d96080.aad37\",\"type\":\"inject\",\"z\":\"403d67ed1c8bce92\",\"name\":\"Get top 1000 with ID \\u003e= 200\",\"props\":[{\"p\":\"payload\"},{\"p\":\"topic\",\"vt\":\"str\"}],\"repeat\":\"\",\"crontab\":\"\",\"once\":false,\"onceDelay\":0.1,\"topic\":\"1000\",\"payload\":\"200\",\"payloadType\":\"num\",\"x\":620,\"y\":1500,\"wires\":[[\"9e3efaa0.4d1258\"]]},{\"id\":\"9e3efaa0.4d1258\",\"type\":\"MSSQL\",\"z\":\"403d67ed1c8bce92\",\"mssqlCN\":\"8d9d212a.cea03\",\"name\":\"Select Data\",\"outField\":\"payload\",\"returnType\":\"0\",\"throwErrors\":1,\"query\":\"PRINT 'Selecting TOP {{{topic}}} from demo_device_parameters_table'\\r\\nPRINT 'Where ID if \\u003e or = to '\\r\\nPRINT @ID\\r\\nSELECT TOP {{{topic}}} * \\r\\nFROM [dbo].[demo_device_parameters_table]\\r\\nWHERE ID \\u003e= @ID\\r\\nPRINT @@ROWCOUNT\\r\\n\\r\\n--Print info will appear in msg.sqlInfo\",\"modeOpt\":\"\",\"modeOptType\":\"query\",\"queryOpt\":\"\",\"queryOptType\":\"editor\",\"paramsOpt\":\"\",\"paramsOptType\":\"editor\",\"rows\":\"rows\",\"rowsType\":\"msg\",\"parseMustache\":true,\"params\":[{\"output\":false,\"name\":\"ID\",\"type\":\"int\",\"valueType\":\"msg\",\"value\":\"payload\",\"options\":{\"nullable\":true,\"primary\":false,\"identity\":false,\"readOnly\":false}}],\"x\":870,\"y\":1520,\"wires\":[[\"6f2eedb2.232a14\"]]},{\"id\":\"6f2eedb2.232a14\",\"type\":\"debug\",\"z\":\"403d67ed1c8bce92\",\"name\":\"Selected Data\",\"active\":true,\"tosidebar\":true,\"console\":false,\"tostatus\":false,\"complete\":\"true\",\"targetType\":\"full\",\"statusVal\":\"\",\"statusType\":\"auto\",\"x\":1120,\"y\":1520,\"wires\":[]},{\"id\":\"50f35944.757a98\",\"type\":\"inject\",\"z\":\"403d67ed1c8bce92\",\"name\":\"Clean up\",\"props\":[{\"p\":\"payload\"},{\"p\":\"topic\",\"vt\":\"str\"}],\"repeat\":\"\",\"crontab\":\"\",\"once\":false,\"onceDelay\":0.1,\"topic\":\"\",\"payload\":\"\",\"payloadType\":\"str\",\"x\":560,\"y\":1620,\"wires\":[[\"5d35875.1813978\"]]},{\"id\":\"5d35875.1813978\",\"type\":\"MSSQL\",\"z\":\"403d67ed1c8bce92\",\"mssqlCN\":\"8d9d212a.cea03\",\"name\":\"Drop demo_device_parameters_table\",\"outField\":\"payload\",\"returnType\":\"1\",\"throwErrors\":1,\"query\":\"\\r\\nDROP TABLE [dbo].[demo_device_parameters_table]\\r\\n\",\"modeOpt\":\"\",\"modeOptType\":\"query\",\"queryOpt\":\"\",\"queryOptType\":\"editor\",\"paramsOpt\":\"\",\"paramsOptType\":\"none\",\"rows\":\"rows\",\"rowsType\":\"msg\",\"parseMustache\":true,\"params\":[],\"x\":810,\"y\":1620,\"wires\":[[\"171cac85.61f193\"]]},{\"id\":\"171cac85.61f193\",\"type\":\"debug\",\"z\":\"403d67ed1c8bce92\",\"name\":\"Clean up result\",\"active\":true,\"tosidebar\":true,\"console\":false,\"tostatus\":false,\"complete\":\"true\",\"targetType\":\"full\",\"statusVal\":\"\",\"statusType\":\"auto\",\"x\":1120,\"y\":1620,\"wires\":[]},{\"id\":\"773638cc.7c5478\",\"type\":\"inject\",\"z\":\"403d67ed1c8bce92\",\"name\":\"Get top 50 with ID \\u003e= 1000\",\"props\":[{\"p\":\"payload\"},{\"p\":\"topic\",\"vt\":\"str\"}],\"repeat\":\"\",\"crontab\":\"\",\"once\":false,\"onceDelay\":0.1,\"topic\":\"50\",\"payload\":\"1000\",\"payloadType\":\"num\",\"x\":610,\"y\":1540,\"wires\":[[\"9e3efaa0.4d1258\"]]},{\"id\":\"100cb0e1.3c1c8f\",\"type\":\"comment\",\"z\":\"403d67ed1c8bce92\",\"name\":\"5. Click \\\"Clean up\\\" Inject to drop the table\",\"info\":\"\",\"x\":640,\"y\":1080,\"wires\":[]},{\"id\":\"34b7b9848b9446ea\",\"type\":\"inject\",\"z\":\"403d67ed1c8bce92\",\"name\":\"\",\"props\":[{\"p\":\"payload\"},{\"p\":\"topic\",\"vt\":\"str\"}],\"repeat\":\"\",\"crontab\":\"\",\"once\":false,\"onceDelay\":0.1,\"topic\":\"rows\",\"payload\":\"1000\",\"payloadType\":\"num\",\"x\":560,\"y\":1360,\"wires\":[[\"ab27ed3bf3bb6cb0\"]]},{\"id\":\"ab27ed3bf3bb6cb0\",\"type\":\"function\",\"z\":\"403d67ed1c8bce92\",\"name\":\"generate data and params\",\"func\":\"\u002F\u002F Table fields...\\n\u002F\u002F IP, Name, Timestamp, Param_Name, Param_Value\\n\\nlet IP = \\\"1.2.3.4\\\";\\nlet Name = \\\"fake_device\\\";\\nlet now = (new Date()).toISOString(); \u002F\u002Fgenerate a timestamp\\nmsg.bulk_data_to_insert = []; \u002F\u002Fthe msg property we will use to pass the data array to the MSSQL node\\n\\n\u002F\u002Fgenerate fake data rows of data in the following format...\\n\u002F*\\n[\\n    [col1, col2, coln... ], \u002F\u002Frow 1\\n    [col1, col2, coln... ], \u002F\u002Frow 2\\n    [col1, col2, coln... ], \u002F\u002Frow n\\n]\\n*\u002F\\nif (msg.topic == \\\"rows\\\") {\\n    for (let x = 1; x \\u003c= msg.payload; x++) {\\n        msg.bulk_data_to_insert.push([\\n            IP, Name, now, `P${x + 1000}`, Math.random()\\n        ]);\\n    }\\n} else {\\n    for (let x = 1; x \\u003c= msg.payload; x++) {\\n        msg.bulk_data_to_insert.push({\\n            IP: IP, \\n            Name: Name, \\n            Timestamp: now, \\n            Param_Name: `P${x + 1000}`,\\n            Param_Value: Math.random()\\n        });\\n    }\\n}\\n\\nmsg.queryParams = [    \\n    { output: false, name: \\\"IP\\\", type: \\\"Nvarchar(200)\\\", options: { nullable: true } },\\n    { output: false, name: \\\"Name\\\", type: \\\"Nvarchar(200)\\\", options: { nullable: true } },\\n    { output: false, name: \\\"Timestamp\\\", type: \\\"Nvarchar(200)\\\", options: { nullable: true } },\\n    { output: false, name: \\\"Param_Name\\\", type: \\\"Nvarchar(200)\\\", options: { nullable: true } },\\n    { output: false, name: \\\"Param_Value\\\", type: \\\"float\\\", options: { nullable: true } }\\n]\\n\\nreturn msg;\",\"outputs\":1,\"timeout\":\"\",\"noerr\":0,\"initialize\":\"\",\"finalize\":\"\",\"libs\":[],\"x\":820,\"y\":1360,\"wires\":[[\"ebd9f8405d64540c\",\"fb8fcf7db017e8c4\"]]},{\"id\":\"750b93555a38e08b\",\"type\":\"inject\",\"z\":\"403d67ed1c8bce92\",\"name\":\"\",\"props\":[{\"p\":\"payload\"},{\"p\":\"topic\",\"vt\":\"str\"}],\"repeat\":\"\",\"crontab\":\"\",\"once\":false,\"onceDelay\":0.1,\"topic\":\"rows\",\"payload\":\"10000\",\"payloadType\":\"num\",\"x\":570,\"y\":1400,\"wires\":[[\"ab27ed3bf3bb6cb0\"]]},{\"id\":\"29aee9ba8595af32\",\"type\":\"inject\",\"z\":\"403d67ed1c8bce92\",\"name\":\"\",\"props\":[{\"p\":\"payload\"},{\"p\":\"topic\",\"vt\":\"str\"}],\"repeat\":\"\",\"crontab\":\"\",\"once\":false,\"onceDelay\":0.1,\"topic\":\"objects\",\"payload\":\"2000\",\"payloadType\":\"num\",\"x\":570,\"y\":1440,\"wires\":[[\"ab27ed3bf3bb6cb0\"]]},{\"id\":\"ebd9f8405d64540c\",\"type\":\"debug\",\"z\":\"403d67ed1c8bce92\",\"name\":\"Bulk Data to insert\",\"active\":true,\"tosidebar\":true,\"console\":false,\"tostatus\":false,\"complete\":\"bulk_data_to_insert\",\"targetType\":\"msg\",\"statusVal\":\"\",\"statusType\":\"auto\",\"x\":1130,\"y\":1360,\"wires\":[]},{\"id\":\"fb8fcf7db017e8c4\",\"type\":\"MSSQL\",\"z\":\"403d67ed1c8bce92\",\"mssqlCN\":\"8d9d212a.cea03\",\"name\":\"bulk insert with params -\\u003e demo_device_parameters_table\",\"outField\":\"payload\",\"returnType\":\"0\",\"throwErrors\":1,\"query\":\"demo_device_parameters_table\",\"modeOpt\":\"\",\"modeOptType\":\"bulk\",\"queryOpt\":\"\",\"queryOptType\":\"editor\",\"paramsOpt\":\"queryParams\",\"paramsOptType\":\"msg\",\"rows\":\"bulk_data_to_insert\",\"rowsType\":\"msg\",\"parseMustache\":false,\"params\":[],\"x\":960,\"y\":1400,\"wires\":[[\"cc6648dcfaba3bbc\"]]},{\"id\":\"cc6648dcfaba3bbc\",\"type\":\"debug\",\"z\":\"403d67ed1c8bce92\",\"name\":\"Bulk Insert Result\",\"active\":true,\"tosidebar\":true,\"console\":false,\"tostatus\":false,\"complete\":\"payload\",\"targetType\":\"msg\",\"statusVal\":\"\",\"statusType\":\"auto\",\"x\":1130,\"y\":1440,\"wires\":[]},{\"id\":\"8d9d212a.cea03\",\"type\":\"MSSQL-CN\",\"tdsVersion\":\"7_4\",\"name\":\"My SQL Server connection\",\"server\":\"172.17.1.2\",\"port\":\"1433\",\"encyption\":true,\"trustServerCertificate\":true,\"database\":\"testdb\",\"useUTC\":true,\"connectTimeout\":\"15000\",\"requestTimeout\":\"15000\",\"cancelTimeout\":\"5000\",\"pool\":\"5\",\"parseJSON\":false,\"enableArithAbort\":true,\"readOnlyIntent\":false}]",{"name":91,"path":92,"url":93,"downloadUrl":94,"flow":95},"TVP","examples\u002FTVP.json","https:\u002F\u002Fgithub.com\u002Fbestlong\u002Fnode-red-contrib-mssql-plus\u002Fblob\u002Fmaster\u002Fexamples\u002FTVP.json","https:\u002F\u002Fraw.githubusercontent.com\u002Fbestlong\u002Fnode-red-contrib-mssql-plus\u002Fmaster\u002Fexamples\u002FTVP.json","[{\"id\":\"3eb71b1f.47fdb4\",\"type\":\"MSSQL\",\"z\":\"403d67ed1c8bce92\",\"mssqlCN\":\"8d9d212a.cea03\",\"name\":\"\",\"outField\":\"payload\",\"returnType\":\"1\",\"throwErrors\":\"1\",\"query\":\"MyCustomStoredProcedure\",\"modeOpt\":\"\",\"modeOptType\":\"execute\",\"queryOpt\":\"\",\"queryOptType\":\"editor\",\"paramsOpt\":\"\",\"paramsOptType\":\"editor\",\"rows\":\"rows\",\"rowsType\":\"msg\",\"parseMustache\":true,\"params\":[{\"output\":false,\"name\":\"tvp\",\"type\":\"TVP\",\"valueType\":\"msg\",\"value\":\"table\",\"options\":{\"nullable\":true,\"primary\":false,\"identity\":false,\"readOnly\":false}}],\"x\":1100,\"y\":700,\"wires\":[[\"bfde3540.a91018\"]]},{\"id\":\"614325ad.afd22c\",\"type\":\"inject\",\"z\":\"403d67ed1c8bce92\",\"name\":\"3. Execute Procedure\",\"props\":[{\"p\":\"payload\"},{\"p\":\"topic\",\"vt\":\"str\"}],\"repeat\":\"\",\"crontab\":\"\",\"once\":false,\"onceDelay\":0.1,\"topic\":\"\",\"payload\":\"[[\\\"I am sent from an inject node\\\",444],[\\\"then rendered in the static parameter\\\",555]]\",\"payloadType\":\"json\",\"x\":600,\"y\":700,\"wires\":[[\"63fa0f60.56474\"]]},{\"id\":\"bfde3540.a91018\",\"type\":\"debug\",\"z\":\"403d67ed1c8bce92\",\"name\":\"\",\"active\":true,\"tosidebar\":true,\"console\":false,\"tostatus\":false,\"complete\":\"true\",\"targetType\":\"full\",\"x\":1250,\"y\":700,\"wires\":[]},{\"id\":\"e94800fc.ccd07\",\"type\":\"comment\",\"z\":\"403d67ed1c8bce92\",\"name\":\"Read me - using TVP (Static query and param type set in the MSSQL node, param \u002F Dynamic param value)\",\"info\":\"Using the example sql type and procedure [here](https:\u002F\u002Ftediousjs.github.io\u002Fnode-mssql\u002F#table-valued-parameter-tvp), you would need data in the value to be in the following format...\\n```json\\n{\\n    \\\"columns\\\": [\\n        {\\n            \\\"name\\\": \\\"a\\\",\\n            \\\"type\\\": \\\"VarChar(50)\\\"\\n        },\\n        {\\n            \\\"name\\\": \\\"b\\\",\\n            \\\"type\\\": \\\"Int\\\"\\n        }\\n    ],\\n    \\\"rows\\\": [\\n        [ \\\"hello tvp\\\", 777 ],\\n        [ \\\"bye tvp\\\", 888 ],\\n        [ \\\"call the cops\\\", 999 ]\\n    ]\\n}\\n```\\nthis flow works with the above example...\",\"x\":840,\"y\":660,\"wires\":[]},{\"id\":\"31c4ef57.ffa84\",\"type\":\"comment\",\"z\":\"403d67ed1c8bce92\",\"name\":\"Read me - setup SQL Connection\",\"info\":\"1. Open the MSSQL node\\n2. Click the [pencil] icon to edit the connection\\n3. Enter your servers host name (or IP), username, password, database name\\n4. Click Done, Done\\n5. cycle through the 4 numbered Inject nodes.\\n\\n\",\"x\":610,\"y\":260,\"wires\":[]},{\"id\":\"762d8c3.81ea874\",\"type\":\"MSSQL\",\"z\":\"403d67ed1c8bce92\",\"mssqlCN\":\"8d9d212a.cea03\",\"name\":\"\",\"outField\":\"payload\",\"returnType\":\"1\",\"throwErrors\":\"1\",\"query\":\"\",\"modeOpt\":\"\",\"modeOptType\":\"query\",\"queryOpt\":\"payload\",\"queryOptType\":\"msg\",\"paramsOpt\":\"\",\"paramsOptType\":\"editor\",\"rows\":\"rows\",\"rowsType\":\"msg\",\"parseMustache\":true,\"params\":[],\"x\":1100,\"y\":460,\"wires\":[[\"96087d50.fe40d\"]]},{\"id\":\"212bac4b.281e64\",\"type\":\"inject\",\"z\":\"403d67ed1c8bce92\",\"name\":\"1. click me\",\"repeat\":\"\",\"crontab\":\"\",\"once\":false,\"onceDelay\":0.1,\"topic\":\"\",\"payload\":\"\",\"payloadType\":\"date\",\"x\":560,\"y\":420,\"wires\":[[\"3342797c.efa666\"]]},{\"id\":\"3342797c.efa666\",\"type\":\"template\",\"z\":\"403d67ed1c8bce92\",\"name\":\"create TYPE\",\"field\":\"payload\",\"fieldType\":\"msg\",\"format\":\"sql\",\"syntax\":\"mustache\",\"template\":\"CREATE TYPE TestType AS TABLE ( a VARCHAR(50), b INT );\\n\",\"output\":\"str\",\"x\":790,\"y\":420,\"wires\":[[\"762d8c3.81ea874\"]]},{\"id\":\"8885e5af.51be18\",\"type\":\"inject\",\"z\":\"403d67ed1c8bce92\",\"name\":\"4. click me\",\"repeat\":\"\",\"crontab\":\"\",\"once\":false,\"onceDelay\":0.1,\"topic\":\"\",\"payload\":\"\",\"payloadType\":\"date\",\"x\":560,\"y\":500,\"wires\":[[\"6783b62a.0ad9f8\"]]},{\"id\":\"6783b62a.0ad9f8\",\"type\":\"template\",\"z\":\"403d67ed1c8bce92\",\"name\":\"drop TYPE and PROCEDURE\",\"field\":\"payload\",\"fieldType\":\"msg\",\"format\":\"sql\",\"syntax\":\"mustache\",\"template\":\"\\n\\nDROP PROCEDURE MyCustomStoredProcedure;\\n\\nDROP TYPE TestType;\",\"output\":\"str\",\"x\":850,\"y\":500,\"wires\":[[\"762d8c3.81ea874\"]]},{\"id\":\"f9848462.001d58\",\"type\":\"inject\",\"z\":\"403d67ed1c8bce92\",\"name\":\"2. click me\",\"repeat\":\"\",\"crontab\":\"\",\"once\":false,\"onceDelay\":0.1,\"topic\":\"\",\"payload\":\"\",\"payloadType\":\"date\",\"x\":560,\"y\":460,\"wires\":[[\"757512fd.70849c\"]]},{\"id\":\"757512fd.70849c\",\"type\":\"template\",\"z\":\"403d67ed1c8bce92\",\"name\":\"create PROCEDURE\",\"field\":\"payload\",\"fieldType\":\"msg\",\"format\":\"sql\",\"syntax\":\"mustache\",\"template\":\"CREATE PROCEDURE MyCustomStoredProcedure (@tvp TestType readonly) AS SELECT * FROM @tvp;\\n\",\"output\":\"str\",\"x\":820,\"y\":460,\"wires\":[[\"762d8c3.81ea874\"]]},{\"id\":\"96087d50.fe40d\",\"type\":\"debug\",\"z\":\"403d67ed1c8bce92\",\"name\":\"\",\"active\":true,\"tosidebar\":true,\"console\":false,\"tostatus\":false,\"complete\":\"true\",\"targetType\":\"full\",\"x\":1250,\"y\":460,\"wires\":[]},{\"id\":\"8d138f11.b2875\",\"type\":\"comment\",\"z\":\"403d67ed1c8bce92\",\"name\":\"Read me - Setup\",\"info\":\"1 - create the type in the database\\n2 - create the procedure in the database\\n4 - drop the procedure and type from the database\",\"x\":560,\"y\":380,\"wires\":[]},{\"id\":\"63fa0f60.56474\",\"type\":\"function\",\"z\":\"403d67ed1c8bce92\",\"name\":\"create table for 'tvp' param\",\"func\":\"var table = {\\n    \\\"columns\\\":[\\n        {\\\"name\\\":\\\"a\\\",\\\"type\\\":\\\"VarChar(50)\\\"},\\n        {\\\"name\\\":\\\"b\\\",\\\"type\\\":\\\"Int\\\"}\\n    ],\\n    \\\"rows\\\": msg.payload \u002F\u002Fget rows from payload of prev node\\n}\\nmsg.table = table;\\nreturn msg;\",\"outputs\":1,\"noerr\":0,\"initialize\":\"\",\"finalize\":\"\",\"x\":840,\"y\":700,\"wires\":[[\"3eb71b1f.47fdb4\"]]},{\"id\":\"560be5fd.e4826c\",\"type\":\"comment\",\"z\":\"403d67ed1c8bce92\",\"name\":\"Read me - using TVP (Fully Dynamic (MSSQL node has nothing set other than the connection))\",\"info\":\"Using the example sql type and procedure [here](https:\u002F\u002Ftediousjs.github.io\u002Fnode-mssql\u002F#table-valued-parameter-tvp), you would need data in the value to be in the following format...\\n```json\\n{\\n    \\\"columns\\\": [\\n        {\\n            \\\"name\\\": \\\"a\\\",\\n            \\\"type\\\": \\\"VarChar(50)\\\"\\n        },\\n        {\\n            \\\"name\\\": \\\"b\\\",\\n            \\\"type\\\": \\\"Int\\\"\\n        }\\n    ],\\n    \\\"rows\\\": [\\n        [ \\\"hello tvp\\\", 777 ],\\n        [ \\\"bye tvp\\\", 888 ],\\n        [ \\\"call the cops\\\", 999 ]\\n    ]\\n}\\n```\\n\\nThe inject node provides the raw data values in the form of an array of rows (which are arrays os value) e.g...\\n```\\n[ \\n  [val1, val2], \u002F\u002Frow 1\\n  [val1, val2], \u002F\u002Frow 2\\n]\\n```\\n\\nIn the function node, we add more values for the MSSQL node...\\n* `msg.payload` is set to the name of the stored procedure\\n* `msg.queryMode` is set to 'execute' (so that the stored procedure node is used)\\n* `msg.queryParams` is set to an array of parameter objects\\n\\n\",\"x\":810,\"y\":760,\"wires\":[]},{\"id\":\"cf651a84.3e0048\",\"type\":\"inject\",\"z\":\"403d67ed1c8bce92\",\"name\":\"3. Execute Procedure\",\"props\":[{\"p\":\"payload\"},{\"p\":\"topic\",\"vt\":\"str\"}],\"repeat\":\"\",\"crontab\":\"\",\"once\":false,\"onceDelay\":0.1,\"topic\":\"\",\"payload\":\"[[\\\"I am just an array value...\\\",777],[\\\"I was sent in from an inject node\\\",888],[\\\"but I could come from anywhere\\\",999]]\",\"payloadType\":\"json\",\"x\":600,\"y\":800,\"wires\":[[\"b5125a59.44c0e8\"]]},{\"id\":\"b5125a59.44c0e8\",\"type\":\"function\",\"z\":\"403d67ed1c8bce92\",\"name\":\"dynamic query, table and params\",\"func\":\"\\n\u002F\u002Fcreate the TVP data table parameter value\\nvar table = {\\n    \\\"columns\\\":[\\n        {\\\"name\\\":\\\"a\\\",\\\"type\\\":\\\"VarChar(50)\\\"},\\n        {\\\"name\\\":\\\"b\\\",\\\"type\\\":\\\"Int\\\"}\\n    ],\\n    \\\"rows\\\": msg.payload \u002F\u002Fget rows from payload of prev node\\n}\\n\\n\u002F\u002Fset query mode to execute a stored procedure\\nmsg.queryMode = \\\"execute\\\";\\n\\n\u002F\u002Fset the query in payload \\nmsg.query = \\\"MyCustomStoredProcedure\\\";\u002F\u002Fset the query to name of the stored procedure to use\\n\\n\u002F\u002Fsetup the params array \\nmsg.queryParams = [];\\n\\n\u002F\u002Fadd param\\nmsg.queryParams.push({\\n    \\\"name\\\": \\\"tvp\\\",\\n    \\\"type\\\": \\\"TVP\\\", \u002F\u002Fcan also use \\\"TVP(TestType)\\\"\\n    \\\"value\\\": table,\\n    \\\"output\\\": false\\n});\\n\\nreturn msg;\",\"outputs\":1,\"timeout\":\"\",\"noerr\":0,\"initialize\":\"\",\"finalize\":\"\",\"libs\":[],\"x\":860,\"y\":800,\"wires\":[[\"f3a59f13.b2201\"]]},{\"id\":\"f3a59f13.b2201\",\"type\":\"MSSQL\",\"z\":\"403d67ed1c8bce92\",\"mssqlCN\":\"8d9d212a.cea03\",\"name\":\"\",\"outField\":\"payload\",\"returnType\":\"1\",\"throwErrors\":\"1\",\"query\":\"\",\"modeOpt\":\"queryMode\",\"modeOptType\":\"msg\",\"queryOpt\":\"query\",\"queryOptType\":\"msg\",\"paramsOpt\":\"queryParams\",\"paramsOptType\":\"msg\",\"rows\":\"rows\",\"rowsType\":\"msg\",\"parseMustache\":true,\"params\":[],\"x\":1100,\"y\":800,\"wires\":[[\"971095a3.b7d678\"]]},{\"id\":\"971095a3.b7d678\",\"type\":\"debug\",\"z\":\"403d67ed1c8bce92\",\"name\":\"\",\"active\":true,\"tosidebar\":true,\"console\":false,\"tostatus\":false,\"complete\":\"true\",\"targetType\":\"full\",\"x\":1250,\"y\":800,\"wires\":[]},{\"id\":\"c01c04cb.fec838\",\"type\":\"MSSQL\",\"z\":\"403d67ed1c8bce92\",\"mssqlCN\":\"8d9d212a.cea03\",\"name\":\"\",\"outField\":\"payload\",\"returnType\":\"1\",\"throwErrors\":\"1\",\"query\":\"MyCustomStoredProcedure\",\"modeOpt\":\"\",\"modeOptType\":\"execute\",\"queryOpt\":\"\",\"queryOptType\":\"editor\",\"paramsOpt\":\"\",\"paramsOptType\":\"editor\",\"rows\":\"rows\",\"rowsType\":\"msg\",\"parseMustache\":true,\"params\":[{\"output\":false,\"name\":\"tvp\",\"type\":\"TVP\",\"valueType\":\"json\",\"value\":\"{\\\"columns\\\":[{\\\"name\\\":\\\"a\\\",\\\"type\\\":\\\"VarChar(50)\\\"},{\\\"name\\\":\\\"b\\\",\\\"type\\\":\\\"Int\\\"}],\\\"rows\\\":[[\\\"i am hard coded in MSSQL Node\\\",111],[\\\"me too too too\\\",222],[\\\"me three three three\\\",333]]}\",\"options\":{\"nullable\":true,\"primary\":false,\"identity\":false,\"readOnly\":false}}],\"x\":1100,\"y\":600,\"wires\":[[\"25357ef9.64e812\"]]},{\"id\":\"996c5863.3607e8\",\"type\":\"inject\",\"z\":\"403d67ed1c8bce92\",\"name\":\"3. Execute Procedure\",\"repeat\":\"\",\"crontab\":\"\",\"once\":false,\"onceDelay\":0.1,\"topic\":\"\",\"payload\":\"true\",\"payloadType\":\"bool\",\"x\":600,\"y\":600,\"wires\":[[\"c01c04cb.fec838\"]]},{\"id\":\"25357ef9.64e812\",\"type\":\"debug\",\"z\":\"403d67ed1c8bce92\",\"name\":\"\",\"active\":true,\"tosidebar\":true,\"console\":false,\"tostatus\":false,\"complete\":\"true\",\"targetType\":\"full\",\"x\":1250,\"y\":600,\"wires\":[]},{\"id\":\"8d30cc63.4638e\",\"type\":\"comment\",\"z\":\"403d67ed1c8bce92\",\"name\":\"Read me - using TVP (Static setup of query, param and param value in the MSSQL node)\",\"info\":\"Using the example sql type and procedure [here](https:\u002F\u002Ftediousjs.github.io\u002Fnode-mssql\u002F#table-valued-parameter-tvp), you would need data in the value to be in the following format...\\n```json\\n{\\n    \\\"columns\\\": [\\n        {\\n            \\\"name\\\": \\\"a\\\",\\n            \\\"type\\\": \\\"VarChar(50)\\\"\\n        },\\n        {\\n            \\\"name\\\": \\\"b\\\",\\n            \\\"type\\\": \\\"Int\\\"\\n        }\\n    ],\\n    \\\"rows\\\": [\\n        [ \\\"hello tvp\\\", 777 ],\\n        [ \\\"bye tvp\\\", 888 ],\\n        [ \\\"call the cops\\\", 999 ]\\n    ]\\n}\\n```\\nthis flow works with the above example...\",\"x\":790,\"y\":560,\"wires\":[]},{\"id\":\"8d9d212a.cea03\",\"type\":\"MSSQL-CN\",\"tdsVersion\":\"7_4\",\"name\":\"My SQL Server connection\",\"server\":\"172.17.1.2\",\"port\":\"1433\",\"encyption\":true,\"trustServerCertificate\":true,\"database\":\"testdb\",\"useUTC\":true,\"connectTimeout\":\"15000\",\"requestTimeout\":\"15000\",\"cancelTimeout\":\"5000\",\"pool\":\"5\",\"parseJSON\":false,\"enableArithAbort\":true,\"readOnlyIntent\":false}]","\u003Ch1 id=\"node-red-contrib-mssql-plus\">\u003Ca class=\"header-anchor\" href=\"#node-red-contrib-mssql-plus\">node-red-contrib-mssql-plus\u003C\u002Fa>\u003C\u002Fh1>\n\u003Cp>A \u003Ca href=\"http:\u002F\u002Fnodered.org\">Node-RED\u003C\u002Fa> node to execute queries, stored procedures and bulk inserts in Microsoft SQL Server and Azure Databases SQL2000 ~ SQL2022.\u003C\u002Fp>\n\u003Cp>Importantly, this package comes with pre-built linux drivers for communicating with the Azure &amp; MS SQL services (using TDS protocol), removing the need to set-up environment level MSSQL (or similar) drivers.\u003C\u002Fp>\n\u003Chr \u002F>\n\u003Ch2 id=\"screen-shot\">\u003Ca class=\"header-anchor\" href=\"#screen-shot\">Screen shot\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>\u003Cimg src=\"https:\u002F\u002Fuser-images.githubusercontent.com\u002F44235289\u002F87884584-14287900-ca07-11ea-8825-0030943f3c4a.png\" alt=\"image\" \u002F>\u003C\u002Fp>\n\u003Ch2 id=\"features-include\">\u003Ca class=\"header-anchor\" href=\"#features-include\">Features include...\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>Connect to multiple SQL Servers and Azure databases from SQL2000 ~ 2022\u003C\u002Fli>\n\u003Cli>Perform multiple queries in one go &amp; get back multiple recordsets (depends on the queries sent)\u003C\u002Fli>\n\u003Cli>Supports Stored Procedure execute\u003C\u002Fli>\n\u003Cli>Supports Bulk Insert\u003C\u002Fli>\n\u003Cli>Built in examples (node-red hamburger menu → import → examples → node-red-contrib-mssql-plus)\n\u003Cul>\n\u003Cli>TVP - A demo of calling a stored procedure and passing in a table valued parameters\u003C\u002Fli>\n\u003Cli>BULK - A demo of inserting a large amount of data in bulk mode\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>Use env vars in the config node for all fields (including credentials). e.g...\n\u003Cul>\n\u003Cli>Server \u003Ccode>{{{SQL_IP}}}\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>Password \u003Ccode>{{{SQL_PW}}}\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>Use mustache in your SQL queries including msg, flow and global context. e.g...\n\u003Cul>\n\u003Cli>\u003Ccode>SELECT TOP {{{payload.maxRows}}} * FROM [MyTable] WHERE Name = '{{{flow.name}}}' AND quantity &lt;= {{{global.maxQty}}}\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>View the final query (mustache rendered into values) in \u003Ccode>msg.query\u003C\u002Fcode> to understanding what happened to your {{{mustache}}} parameters\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>Enter parameters in the UI or send parameters in via \u003Ccode>msg\u003C\u002Fcode>, \u003Ccode>flow\u003C\u002Fcode> or \u003Ccode>global\u003C\u002Fcode> variables for use in your SQL queries e.g...\n\u003Cul>\n\u003Cli>\u003Ccode>SELECT * FROM [MyTable] WHERE Name = @name AND quantity &lt;= @maxQty\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>View the final parameters (rendered with final values) in \u003Ccode>msg.queryParams\u003C\u002Fcode> that were used in the query to aid debugging\u003C\u002Fli>\n\u003Cli>View output parameters values in \u003Ccode>msg.queryParams\u003C\u002Fcode> after the query has executed\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>Choose between throwing an error to the catch node or outputting an error property in \u003Ccode>msg.error\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>Additional properties are in the msg object (use a debug node with \"complete msg object\" set to see whats available)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2 id=\"install\">\u003Ca class=\"header-anchor\" href=\"#install\">Install\u003C\u002Fa>\u003C\u002Fh2>\n\u003Ch3 id=\"easiest\">\u003Ca class=\"header-anchor\" href=\"#easiest\">Easiest\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cp>Use the Manage Palette &gt; Install option from the menu inside node-red\u003C\u002Fp>\n\u003Ch3 id=\"harder\">\u003Ca class=\"header-anchor\" href=\"#harder\">Harder\u003C\u002Fa>\u003C\u002Fh3>\n\u003Cp>Alternatively in your Node-RED user directory, typically ~\u002F.node-red, run\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-bash\">npm install node-red-contrib-mssql-plus\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2 id=\"usage\">\u003Ca class=\"header-anchor\" href=\"#usage\">Usage\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>Please refer to the built in help in the info panel in node red.\u003C\u002Fp>\n\u003Ch2 id=\"sample-flow\">\u003Ca class=\"header-anchor\" href=\"#sample-flow\">Sample flow\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>Demonstrating mustache rendering, input parameters, mutliple queries, print info...\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Payload: \u003Ccode>{\"count\": 5, \"age\": 35}\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>Parameters\n\u003Cul>\n\u003Cli>\u003Ccode>name\u003C\u002Fcode>, \u003Ccode>varchar(20)\u003C\u002Fcode>, \u003Ccode>stephen\u003C\u002Fcode>\u003C\u002Fli>\n\u003Cli>\u003Ccode>age\u003C\u002Fcode>, \u003Ccode>int\u003C\u002Fcode>, \u003Ccode>msg.payload.age\u003C\u002Fcode>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003C\u002Fli>\n\u003Cli>Query:\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cpre>\u003Ccode>      PRINT @name\n      SELECT TOP {{{payload.count}}} * \n      FROM testdb.dbo.[MyTable] WHERE Name = @name\n      SELECT TOP {{{payload.count}}} * \n      FROM testdb.dbo.[MyTable] WHERE Age = @age\n      PRINT 'complete'\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cul>\n\u003Cli>After Rendering Mustache:\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cpre>\u003Ccode>      PRINT @name\n      SELECT TOP 5 * \n      FROM testdb.dbo.[MyTable] WHERE Name = @name\n      SELECT TOP 5 * \n      FROM testdb.dbo.[MyTable] WHERE Age = @age\n      PRINT 'complete'\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>flow...\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-json\">[{\"id\":\"61625aaf.479d84\",\"type\":\"inject\",\"z\":\"595a5dd5.a963a4\",\"name\":\"{\\\"count\\\": 5, \\\"age\\\": 35}\",\"topic\":\"\",\"payload\":\"{\\\"count\\\": 5, \\\"age\\\": 35}\",\"payloadType\":\"json\",\"repeat\":\"\",\"crontab\":\"\",\"once\":false,\"onceDelay\":0.1,\"x\":220,\"y\":320,\"wires\":[[\"6e09980a.127878\"]]},{\"id\":\"6e09980a.127878\",\"type\":\"MSSQL\",\"z\":\"595a5dd5.a963a4\",\"mssqlCN\":\"a51e405c.10f64\",\"name\":\"\",\"outField\":\"payload\",\"returnType\":\"1\",\"throwErrors\":\"0\",\"query\":\"PRINT @name\\n\\nSELECT TOP {{{payload.count}}} * \\nFROM testdb.dbo.[MyTable] WHERE Name = @name\\n\\nSELECT TOP {{{payload.count}}} * \\nFROM testdb.dbo.[MyTable] WHERE Age = @age\\n\\nPRINT 'complete'\",\"modeOpt\":\"\",\"modeOptType\":\"query\",\"queryOpt\":\"\",\"queryOptType\":\"editor\",\"paramsOpt\":\"\",\"paramsOptType\":\"editor\",\"params\":[{\"output\":false,\"name\":\"name\",\"type\":\"VarChar(20)\",\"valueType\":\"str\",\"value\":\"stephen\"},{\"output\":false,\"name\":\"age\",\"type\":\"int\",\"valueType\":\"msg\",\"value\":\"payload.age\"}],\"x\":260,\"y\":380,\"wires\":[[\"babb6d0.5ae7e9\"]]},{\"id\":\"babb6d0.5ae7e9\",\"type\":\"debug\",\"z\":\"595a5dd5.a963a4\",\"name\":\"\",\"active\":true,\"tosidebar\":true,\"console\":false,\"tostatus\":false,\"complete\":\"true\",\"targetType\":\"full\",\"x\":270,\"y\":440,\"wires\":[]},{\"id\":\"a51e405c.10f64\",\"type\":\"MSSQL-CN\",\"z\":\"\",\"tdsVersion\":\"7_4\",\"name\":\"My SQL Server\",\"server\":\"192.168.1.38\",\"port\":\"1433\",\"encyption\":false,\"database\":\"testdb\",\"useUTC\":false,\"connectTimeout\":\"15000\",\"requestTimeout\":\"15000\",\"cancelTimeout\":\"5000\",\"pool\":\"5\",\"parseJSON\":false}]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch2 id=\"other\">\u003Ca class=\"header-anchor\" href=\"#other\">Other\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>This node based on \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fredconnect-io\u002Fnode-red-contrib-mssql\">node-red-contrib-mssql\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>Thanks to \u003Ca href=\"http:\u002F\u002Fwww.redconnect.io\">Redconnect.io\u003C\u002Fa>.\u003C\u002Fp>\n",1784738654057]