none
פתיחה מלאה של עץ XML RRS feed

  • שאלה

  • שלום לכולם

    מצ"ב XML

    <Items>
        <Item>
          <IT_Item_Num>100</IT_Item_Num>
          <IT_Type_Forms/>
          <Item_Format>
            <Item_Part>
              <Value_Text>התקבלה החלטה : </Value_Text>
              <Num_Record>7001</Num_Record>
              <Type_external>A</Type_external>
              <Priority_Internet>1</Priority_Internet>
              <Priority_external>1</Priority_external>
            </Item_Part>
            <Item_Part>
              <Value_Text>KodSibatSgira</Value_Text>
              <Num_Record/>
              <Type_external>G</Type_external>
              <Priority_Internet>2</Priority_Internet>
              <Priority_external>2</Priority_external>
            </Item_Part>
         </Item>
        <Item>
          <IT_Item_Num>110</IT_Item_Num>
          <IT_Type_Forms/>
          <Item_Format>
            <Item_Part>
              <Value_Text>מצאנו  </Value_Text>
              <Num_Record>7001</Num_Record>
              <Type_external>A</Type_external>
              <Priority_Internet>1</Priority_Internet>
              <Priority_external>1</Priority_external>
            </Item_Part>
            <Item_Part>
              <Value_Text>Mispar_Pele</Value_Text>
              <Num_Record/>
              <Type_external>F</Type_external>
              <Priority_Internet>2</Priority_Internet>
              <Priority_external>2</Priority_external>
            </Item_Part>
            <Item_Part>
              <Value_Text>-</Value_Text>
              <Num_Record>7079</Num_Record>
              <Type_external>A</Type_external>
              <Priority_Internet>9</Priority_Internet>
              <Priority_external>7</Priority_external>
            </Item_Part>
          </Item_Format>
          <Item_Nispachim/>
        </Item>
    <?Items>

    הלקוח מבקש להציג לו את כל העץ בטבלה אחת. לדוגמה, עבור פריט 100 הוא יקבל שתי שורות שעמודותיהן הראשונות תהיינה זהות ורק בהמשך, החל מ Item_Part הם תהיינה שונות. האם ניתן לבצע זאת בעזרת OPENXML או בדרך אחרת?

    בתודה מראש

    אריה


    אריה שטרן

    יום ראשון 22 יולי 2012 09:41

תשובות

  • הי אריה,

    אני מקווה שזה עונה לך על השאלה...

    DECLARE
    	@xmlItems	AS XML ,
    	@intHandle	AS INT;
    
    SET @xmlItems =
    	N'
    		<Items>
    			 <Item>
    			   <IT_Item_Num>100</IT_Item_Num>
    			   <IT_Type_Forms/>
    			   <Item_Format>
    				 <Item_Part>
    				   <Value_Text>התקבלה החלטה : </Value_Text>
    				   <Num_Record>7001</Num_Record>
    				   <Type_external>A</Type_external>
    				   <Priority_Internet>1</Priority_Internet>
    				   <Priority_external>1</Priority_external>
    				 </Item_Part>
    				 <Item_Part>
    				   <Value_Text>KodSibatSgira</Value_Text>
    				   <Num_Record/>
    				   <Type_external>G</Type_external>
    				   <Priority_Internet>2</Priority_Internet>
    				   <Priority_external>2</Priority_external>
    				 </Item_Part>
    				</Item_Format>
    			  </Item>
    			 <Item>
    			   <IT_Item_Num>110</IT_Item_Num>
    			   <IT_Type_Forms/>
    			   <Item_Format>
    				 <Item_Part>
    				   <Value_Text>מצאנו  </Value_Text>
    				   <Num_Record>7001</Num_Record>
    				   <Type_external>A</Type_external>
    				   <Priority_Internet>1</Priority_Internet>
    				   <Priority_external>1</Priority_external>
    				 </Item_Part>
    				 <Item_Part>
    				   <Value_Text>Mispar_Pele</Value_Text>
    				   <Num_Record/>
    				   <Type_external>F</Type_external>
    				   <Priority_Internet>2</Priority_Internet>
    				   <Priority_external>2</Priority_external>
    				 </Item_Part>
    				 <Item_Part>
    				   <Value_Text>-</Value_Text>
    				   <Num_Record>7079</Num_Record>
    				   <Type_external>A</Type_external>
    				   <Priority_Internet>9</Priority_Internet>
    				   <Priority_external>7</Priority_external>
    				 </Item_Part>
    			   </Item_Format>
    			   <Item_Nispachim/>
    			 </Item>
    		 </Items>
    	';
    
    EXECUTE sys.sp_xml_preparedocument
    	@intHandle OUTPUT ,
    	@xmlItems;
    
    SELECT
    	Item_Num ,
    	Value_Text ,
    	Num_Record ,
    	Type_external ,
    	Priority_Internet ,
    	Priority_external
    FROM
    	OPENXML (@intHandle , N'/Items/Item/Item_Format/Item_Part' , 0)
    	WITH
    		(
    			Item_Num			INT				N'../../IT_Item_Num' ,
    			Value_Text			NVARCHAR(100)	N'Value_Text' ,
    			Num_Record			INT				N'Num_Record' ,
    			Type_external		NCHAR(1)		N'Type_external' ,
    			Priority_Internet	TINYINT			N'Priority_Internet' ,
    			Priority_external	TINYINT			N'Priority_external'
    		)
    ORDER BY
    	Item_Num ASC;
    
    EXECUTE sys.sp_xml_removedocument
    	@intHandle;
    GO
    
    -----------------------------
    גיא גלנצר
    יועץ ומדריך SQL Server
    Madeira - SQL Server Services
    http://www.madeira.co.il
    • הוצע כתשובה על-ידי tetitu יום ראשון 29 יולי 2012 10:44
    • סומן כתשובה על-ידי Ami Levin יום שני 30 יולי 2012 13:33
    יום ראשון 29 יולי 2012 04:49
    מנחה דיון