@@ -1504,3 +1504,146 @@ INV001#!#Standard#!#<NULL>#!#<NULL>#!#<NULL>
1504
1504
INV002#!#Express#!#<NULL>#!#<NULL>#!#<NULL>
1505
1505
~~END~~
1506
1506
1507
+
1508
+ -- Tests for tsql_openxml_get_colpattern and tsql_openxml_get_xmldoc
1509
+ -- Test basic flag patterns
1510
+ SELECT sys.tsql_openxml_get_colpattern('name', 0);
1511
+ GO
1512
+ ~~START~~
1513
+ nvarchar
1514
+ @name
1515
+ ~~END~~
1516
+
1517
+
1518
+ SELECT sys.tsql_openxml_get_colpattern('name', 1);
1519
+ GO
1520
+ ~~START~~
1521
+ nvarchar
1522
+ @name
1523
+ ~~END~~
1524
+
1525
+
1526
+ SELECT sys.tsql_openxml_get_colpattern('name', 2);
1527
+ GO
1528
+ ~~START~~
1529
+ nvarchar
1530
+ name
1531
+ ~~END~~
1532
+
1533
+
1534
+ SELECT sys.tsql_openxml_get_colpattern('name', 3);
1535
+ GO
1536
+ ~~START~~
1537
+ nvarchar
1538
+ name|@name
1539
+ ~~END~~
1540
+
1541
+
1542
+ -- Test flag normalization (mod 4)
1543
+ SELECT sys.tsql_openxml_get_colpattern('id', 4)
1544
+ GO
1545
+ ~~START~~
1546
+ nvarchar
1547
+ @id
1548
+ ~~END~~
1549
+
1550
+
1551
+ SELECT sys.tsql_openxml_get_colpattern('id', 5);
1552
+ GO
1553
+ ~~START~~
1554
+ nvarchar
1555
+ @id
1556
+ ~~END~~
1557
+
1558
+
1559
+ SELECT sys.tsql_openxml_get_colpattern('id', 6);
1560
+ GO
1561
+ ~~START~~
1562
+ nvarchar
1563
+ id
1564
+ ~~END~~
1565
+
1566
+
1567
+ SELECT sys.tsql_openxml_get_colpattern('id', 7);
1568
+ GO
1569
+ ~~START~~
1570
+ nvarchar
1571
+ id|@id
1572
+ ~~END~~
1573
+
1574
+
1575
+ -- Test error and null cases
1576
+ SELECT sys.tsql_openxml_get_colpattern(NULL, 1);
1577
+ GO
1578
+ ~~START~~
1579
+ nvarchar
1580
+ <NULL>
1581
+ ~~END~~
1582
+
1583
+
1584
+ SELECT sys.tsql_openxml_get_colpattern('', 1);
1585
+ GO
1586
+ ~~START~~
1587
+ nvarchar
1588
+ ~~ERROR (Code: 33557097)~~
1589
+
1590
+ ~~ERROR (Message: Column name cannot be empty for OPENXML)~~
1591
+
1592
+
1593
+ SELECT sys.tsql_openxml_get_colpattern('name', -1);
1594
+ GO
1595
+ ~~START~~
1596
+ nvarchar
1597
+ ~~ERROR (Code: 33557097)~~
1598
+
1599
+ ~~ERROR (Message: Invalid flag value -1 for OPENXML)~~
1600
+
1601
+
1602
+ -- Test with valid document handle
1603
+ DECLARE @doc_handle INT;
1604
+ EXEC sp_xml_preparedocument @doc_handle OUTPUT, '<root><item>test</item></root>';
1605
+ SELECT sys.tsql_openxml_get_xmldoc(@doc_handle);
1606
+ EXEC sp_xml_removedocument @doc_handle;
1607
+ GO
1608
+ ~~START~~
1609
+ xml
1610
+ <root><item>test</item></root>
1611
+ ~~END~~
1612
+
1613
+
1614
+ -- Test with invalid or NULL handle
1615
+ SELECT sys.tsql_openxml_get_xmldoc(999);
1616
+ GO
1617
+ ~~START~~
1618
+ xml
1619
+ ~~ERROR (Code: 33557097)~~
1620
+
1621
+ ~~ERROR (Message: Could not find prepared statement with handle 999.)~~
1622
+
1623
+ SELECT sys.tsql_openxml_get_xmldoc(NULL);
1624
+ GO
1625
+ ~~START~~
1626
+ xml
1627
+ <NULL>
1628
+ ~~END~~
1629
+
1630
+
1631
+ -- Tests for views for col pattern and xml doc generation
1632
+ SELECT * FROM openxml_column_patterns WHERE flag = 3;
1633
+ GO
1634
+ ~~START~~
1635
+ varchar#!#int#!#nvarchar
1636
+ id#!#3#!#id|@id
1637
+ name#!#3#!#name|@name
1638
+ value#!#3#!#value|@value
1639
+ ~~END~~
1640
+
1641
+
1642
+ SELECT document_id FROM openxml_documents;
1643
+ GO
1644
+ ~~START~~
1645
+ int
1646
+ ~~ERROR (Code: 33557097)~~
1647
+
1648
+ ~~ERROR (Message: Could not find prepared statement with handle 1.)~~
1649
+
0 commit comments