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

 

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

Πέρασμα παραμέτρου σε Stored Procedure για χρήση της σε in statement

Îåêßíçóå áðü ôï ìÝëïò pontifikas. Τελευταία δημοσίευση από το μέλος nsouflis στις 06-03-2007, 12:11. Υπάρχουν 3 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  06-03-2007, 10:47 25947

    Πέρασμα παραμέτρου σε Stored Procedure για χρήση της σε in statement

    Θέλω να κάνω το εξής:
    Να εκτελέσω αυτό select μέσα σε μια stored Procedure:

    select foo1 from foobar where foo1 in (@foo2)

    Το foo2 Θα είναι όρισμα που εγώ θα περνάω στην prcedure(την οποία καλώ από κώδικα παρεμπιπτώντως), και θέλω να περιέχει τις τιμές που απαιτώ χωρισμένες με κόμμα(πχ '001,1').

    Πώς θα το κάνω αυτό χωρίς ο η SQL να θεωρήσει ότι η @foo2 είναι μία string Μεταβλητή αντί για όσες χωρίζω εγώ με κόμμα( για το παράδειγμα που έδωσα 2)??
    Γιατί ότι και να κάνω δείχνει να μου εκτελεί
    select foo1 from foobar where foo1 in ( '001,1') (που είναι λάθος) αντί για
    select foo1 from foobar where foo1 in ( '001','1') (που είναι το σωστό)

    ....Ε???
  •  06-03-2007, 11:45 25950 σε απάντηση της 25947

    Απ: Πέρασμα παραμέτρου σε Stored Procedure για χρήση της σε in statement

    Εν συντομία, δεν γίνεται. O SQL Server δεν έχει ακόμα array parameters για να μπορεί να δουλέψει έτσι το in. Μία λύση είναι να χρησιμοποιήσεις dynamic sql (μπρρρρρρ!). Άλλη λύση είναι να σπάσεις το string και να βάλεις τις τιμές του σε ένα table variable, με το οποίο μετά θα κάνεις inner join. Αν ψάξεις στο google θα βρεις αρκετές υλοποιήσεις για Split, αν και τις καλύτερες θα τις βρεις σε βιβλία, όπως αυτά του Itzik Ben Gan (δεν θυμάμαι απέξω τίτλους). Μία γρήγορη υλοποίηση βρίσκεται στο http://snippets.dzone.com/posts/show/1183 ενώ μία απλούστερη (αλλά πιο αργή) στο http://www.4guysfromrolla.com/webtech/031004-1.shtml

     


    Παναγιώτης Καναβός, Freelancer
    Twitter: http://www.twitter.com/pkanavos
  •  06-03-2007, 12:03 25953 σε απάντηση της 25947

    Απ: Πέρασμα παραμέτρου σε Stored Procedure για χρήση της σε in statement

    pontifikas:
    Θέλω να κάνω το εξής:
    Να εκτελέσω αυτό select μέσα σε μια stored Procedure:

    select foo1 from foobar where foo1 in ( '001,1') (που είναι λάθος) αντί για
    select foo1 from foobar where foo1 in ( '001','1') (που είναι το σωστό)

    ....Ε???


    Τι ακριβώς κάνεις? Αν κατάλαβα καλά οταν θέτεις την string παράμετρο δεν βάζεις escape charactes μεσα στα ' Με λίγα λόγια το string που πρέπει να δημιουργείς είναι "'001',1'"
    Αν δώσεις τον κώδικα θα είναι πιο εύκολο να πάρεις βοήθεια. Ωστόσο καλύτερα να χρησιμοποιήσεις μια άλλη μέθοδο όπως προτίνει ο φίλτατος Παναγιώτης

    Γιώργος Σακαλής
  •  06-03-2007, 12:11 25956 σε απάντηση της 25947

    Απ: Πέρασμα παραμέτρου σε Stored Procedure για χρήση της σε in statement

    Βρήκα ορισμένα ωραία παραδείγματα εδώ .
    Ελπίζω να σου φανούν χρήσιμα .
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems