none
for xml explicit ERROR RRS feed

  • שאלה

  • היי.

    יש לי פרוצדורה שיוצרת XML ע"י הפקודה for xml explicit.

    עשיתי שינוי קטן ולכאורה תמים והוספתי במיון (ORDER BY) של ה-SELECT שיוצר את ה-XML מיון לפי 2 שדות Bit, ואז קבלתי את השגיאה הזו:

    Parent tag ID 1 is not among the open tags. FOR XML EXPLICIT requires parent tags to be opened first. Check the ordering of the result set.

    כאשר אני מסיר את 2 השדות למיון החדשים, ה-XML נוצר תקין, ללא שגיאות.

    עשיתי גוגל, מצאתי כל מיני רעיונות, אבל לא משהו שעזר לי.


    itaigitt, http://copypastenet.blogspot.com


    • נערך על-ידי itaigitt יום ראשון 11 מרץ 2012 06:59
    יום ראשון 11 מרץ 2012 06:59

תשובות

  • אם תצרף DDL+DML ושאילתה שאתה מריץ יהיה תמיד יותר קל לראות מה מתקבל (לשחזר את זה) ומה אתה רוצה לקבל ולעזור.

    בינתיים הנה דרך יעילה וטובה לעלות על הבעיה וגם פתרון. אני חושב שזה יעזור לך

    http://sqlxml.org/faqs.aspx?faq=28


    signature

    • סומן כתשובה על-ידי itaigitt יום ראשון 11 מרץ 2012 14:08
    יום ראשון 11 מרץ 2012 13:21
    מנחה דיון
  • היי רונן.

    חיים ארוכים שיהיו לך ולי - פתחנו את אותו הלינק בו זמנית :-) והוא אכן היה הפתח לפתרון: הבעיה הייתה בסדר של הרשומות שגרם לזה שparent tag היה אחרי הבן וכדו'.

    כמו כן, הייתה לי בעייה של סידור ערכי NULL ראשונים בסידור DESC של שדה bit. בסופו של דבר עשיתי משהו שלא רציתי - הוספתי עוד "שדה" ל-XML שאומר:

    ... (case when RR.BitField is null then 0 else 1 end) as [RR!2!BitFieldOrderBy],  ...

    תודה רונן.


    itaigitt, http://copypastenet.blogspot.com

    • סומן כתשובה על-ידי itaigitt יום ראשון 11 מרץ 2012 14:08
    יום ראשון 11 מרץ 2012 14:08

כל התגובות

  • אם תצרף DDL+DML ושאילתה שאתה מריץ יהיה תמיד יותר קל לראות מה מתקבל (לשחזר את זה) ומה אתה רוצה לקבל ולעזור.

    בינתיים הנה דרך יעילה וטובה לעלות על הבעיה וגם פתרון. אני חושב שזה יעזור לך

    http://sqlxml.org/faqs.aspx?faq=28


    signature

    • סומן כתשובה על-ידי itaigitt יום ראשון 11 מרץ 2012 14:08
    יום ראשון 11 מרץ 2012 13:21
    מנחה דיון
  • היי רונן.

    חיים ארוכים שיהיו לך ולי - פתחנו את אותו הלינק בו זמנית :-) והוא אכן היה הפתח לפתרון: הבעיה הייתה בסדר של הרשומות שגרם לזה שparent tag היה אחרי הבן וכדו'.

    כמו כן, הייתה לי בעייה של סידור ערכי NULL ראשונים בסידור DESC של שדה bit. בסופו של דבר עשיתי משהו שלא רציתי - הוספתי עוד "שדה" ל-XML שאומר:

    ... (case when RR.BitField is null then 0 else 1 end) as [RR!2!BitFieldOrderBy],  ...

    תודה רונן.


    itaigitt, http://copypastenet.blogspot.com

    • סומן כתשובה על-ידי itaigitt יום ראשון 11 מרץ 2012 14:08
    יום ראשון 11 מרץ 2012 14:08
  • בברכה :-)

    הכל באשמת גוגל שמוביל אותנו לאותם מקומות :-)

    * זה בדיוק הפתרון שאני הייתי בוחר ככל הנראה דרך אגב עם הבדל קטנטן. מכיוון שמדובר על סידור אחרון לפי עמודה זו אין משמעות מה הערך הבינארי אלא רק אם הוא NULL או לא לכן אולי היתי בודק (אני לא בטוח בע"פ כרגע מה עדיף) אם יותר יעיל יהיה לעשות במקום CASE שימוש ב ISNULL וקובע ערך כלשהו למקרים של NULL. כאמור לא ממש מעניין הסידור לפי שדה זה אלא רק ששי לנו בתוצאה סידור נוסף. אני מדיף לעשות שימוש ב CASE במקרים שיש יותר אפשרויות וכשיש רק אפשרות של כן/לא ושינוי הערך במקרה של NULL אני מעדיף שימוש ב ISNULL בדרך כלל


    signature

    יום ראשון 11 מרץ 2012 19:35
    מנחה דיון