Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Πείτε μου τι κάνω λαθος!

Îåêßíçóå áðü ôï ìÝëïò Αλέξανδρος Δημητρίου. Τελευταία δημοσίευση από το μέλος Παναγιώτης Καναβός στις 09-02-2008, 22:04. Υπάρχουν 5 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  09-02-2008, 18:14 40030

    Πείτε μου τι κάνω λαθος!

     

    Σας παρακαλώ ακολουθήστε το παραδειγμά μου και πείτε μου τι κάνω λάθος και δεν μου φέρνει αποτελέσματα!

     

    --Drop table #mytable
    Create table #MyTable
    (
    Field1 int identity,
    Field2 NvarChar (30),
    Field3 NvarChar (50),
    Field4 datetime
    )

    Insert into #Mytable
    Select 'Alexander' , 'Developer' , getdate()
    Go 100

    Select * from #mytable


    --Drop table #temp1
    Create table #temp1
    (
    aa datetime ,
    bb xml
    )


    Insert into #temp1
    Select getdate() , (Select * from #Mytable for xml auto , ROOT ('ROOT'))


    Select * from #temp1

    declare @Xmltext xml , @integer int
    set @Xmltext = (select bb from #temp1)
    EXEC sp_xml_preparedocument @integer OUTPUT, @Xmltext
    --Select @Xmltext
    SELECT    *
    FROM       OPENXML (@integer, '/ROOT' ,1)
                WITH (Field1 nvarchar(10),
                      Field2 nvarchar(20) )


    Αυτοί που ζουν γενναίοι είναι ενάρετοι,κάνουν ένδοξες πράξεις και πέθαινουν αιώνια ξακουστοί....
    Μ.Αλέξανδρος...IV Crusade...
  •  09-02-2008, 19:16 40031 σε απάντηση της 40030

    Απ: Πείτε μου τι κάνω λαθος!

    Βάλε μερικά σχόλια στον κώδικά σου να ξέρουμε τι θέλει να κάνει, για να καταλάβουμε τι δεν κάνει!

    Τι αποτελέσματα θέλεις να σου φέρει. Καταλαβαίνω ότι αν κάποιος ασχοληθεί λίγο θα καταλάβει, αλλά αν θέλεις βοήθεια, πρέπει να βοηθήσεις κι εσύ λίγο! 


    Dimitris Papadimitriou
    Software Development Professional
    dotNETZone.gr News

    Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Διαβάστε επίσης τους όρους χρήσης.
  •  09-02-2008, 19:56 40033 σε απάντηση της 40030

    Απ: Πείτε μου τι κάνω λαθος!

    Αν κρίνω από τα Field1, Field2 στην OpenXML μάλλον προσπαθείς να διαβάσεις το element _x0023_Mytable αντί για το Root. Από τη στιγμή που χρησιμοποιείς πεδία τύπου xml μπορείς να χρησιμοποιήσεις τις μεθόδους που δουλεύουν με αυτόν τον τύπο. Μπορείς για παράδειγμα να επιλέξεις το _x0023_Mytable να το επιλέξεις χρησιμοποιώντας το παρακάτω:

    select bb.query('/ROOT/_x0023_Mytable') from #temp1

    Για να διαβάσεις ένα πεδίο μόνο μπορείς να γράψεις:

    select bb.value('(/ROOT/_x0023_Mytable/@Field1)[1]','int') from #temp1


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  09-02-2008, 19:56 40034 σε απάντηση της 40031

    Απ: Πείτε μου τι κάνω λαθος!

    --Ok!'εχεις δίκιο! Θα βάλω κάποια σχόλια για να καταλάβετε καλύτερα!

    --Εδώ φτιάχνω απλά έναν πίνακα (τυχαία δεν μας πειράζει)

    --Drop table #mytable

    Create table #MyTable

    (

    Field1 int identity,

    Field2 NvarChar (30),

    Field3 NvarChar (50),

    Field4 datetime

    )

    --Εδώ γεμίζω τον πίνακα με 100 τυχαίες εγγραφές

    Insert into #Mytable

    Select 'Alexander' , 'Developer' , getdate()

    Go 100

    Select * from #mytable

    --Εδώ φτιάχνω έναν δευτερο πίνακα όπου το πρώτο πεδίο δεν ξέρω γιατί το έβαλα και το δευτερο ειναι ένα xml πεδίο στο οποίο παρακάτω θα εισάγω το xml του πρώτου μου πίνακα.......

    --Drop table #temp1

    Create table #temp1

    (

    aa datetime ,

    bb xml

    )

    --Εδώ εισάγω στο xml πεδίο του 2ου πίνακα τα δεδομένα του πρωτου μου πίνακα σε xml μορφή

    Insert into #temp1

    Select getdate() , (Select * from #Mytable for xml auto , ROOT ('ROOT'))

     

    Select * from #temp1

     

    --Εδώ προσπαθώ να φέρω σαν αποτέλεσμα τα δεδομένα απο το xml πεδίο μου μα το μόνο που καταφέρνω ειναι να πάρω αντι για 100 rows με τα δεδομένα μου , 100 Null πεδία.......

    declare @Xmltext xml , @integer int

    set @Xmltext = (select bb from #temp1)

    EXEC sp_xml_preparedocument @integer OUTPUT, @Xmltext

    --Select @Xmltext

    SELECT *

    FROM OPENXML (@integer, '/ROOT' ,1)

    WITH (field1 nvarchar(10),

    field2 nvarchar(20) )


    Αυτοί που ζουν γενναίοι είναι ενάρετοι,κάνουν ένδοξες πράξεις και πέθαινουν αιώνια ξακουστοί....
    Μ.Αλέξανδρος...IV Crusade...
  •  09-02-2008, 20:11 40036 σε απάντηση της 40033

    Απ: Πείτε μου τι κάνω λαθος!

    Φίλε Παναγιώτη κατ'αρχην σε ευχαριστώ παρα πολύ για το χρόνο σου....

    Έπειτα θα ήθελα να σε ενημερώσω οτι ο μόνος λόγος που χρησιμοποιώ τον πρώτο πίνακα είναι για να φτιάξω ενα xml αρχειο χρησιμοποιώντας το select for xml που βλεπεις παρακάτω...

     

    Αυτο που ουσιαστικά θέλω να κάνω είναι από ενα xml αρχείο να πάρω σαν αποτέλεσμα τα rows του και έπειτα να τα φορτώσω σε εναν πίνακα.......

     

    Ας υποθέσουμε δλδ οτι έχω τον πίνακα #mytable οπως στον δίνω στο παράδειγμα και μου στέλνει κάποιος ένα xml αρχείο το οποίο θέλω να φορτώσω σε αυτόν.......

    Τι select θα χρησιμοποιήσω για να το κάνω insert στον πίνακα μου??Έχω σπάσει το κεφαλι μου απο το πρώι! Δεν έχω ιδεα σχετικά με xml......

     

     

     


    Αυτοί που ζουν γενναίοι είναι ενάρετοι,κάνουν ένδοξες πράξεις και πέθαινουν αιώνια ξακουστοί....
    Μ.Αλέξανδρος...IV Crusade...
  •  09-02-2008, 22:04 40037 σε απάντηση της 40036

    Απ: Πείτε μου τι κάνω λαθος!

    Την ερώτηση αυτή ήδη την έχεις κάνει με άλλο post. Καλό είναι να μην ανακατώνεις τις ερωτήσεις γιατί κανείς στο τέλος δεν θα καταλάβει τί θέλεις να κάνεις. Αν θέλεις να εισάγεις XML δεδομένα από ένα αρχείο σε ένα πίνακα, ψάξε στο help. Βασικά, για οτιδήποτε χρειάζεσαι στον SQL Server μπορείς να βρεις τις απαντήσεις στο help. Ειδικά για την ερώτηση σου κοίτα το Examples of Bulk Importing and Exporting XML Documents
    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems