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

 

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

SQL Filters tips....

Îåêßíçóå áðü ôï ìÝëïò Bill . Τελευταία δημοσίευση από το μέλος Bill στις 01-11-2009, 22:41. Υπάρχουν 4 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  30-10-2009, 18:23 54843

    SQL Filters tips....

     Θέλω να κάνω ένα SQL Function όπου σαν όρισμα θα έχει μια μεταβλητή varchar όπου θα είναι ένα φίλτρο για ένα SQL Query που θα χρησημοποιώ μέσα στο function πχ :
    myFunction('1,2,34,56,4')  /*Το function όπως θα το καλώ*/
    Μέσα στο function θα έχω ένα SQL query της μορφής SELECT x1,x2,...,x3 FROM table1 where id_op in(1,2,34,56,4)   το οποίο θα κάνει κατί και θα μου επιστέφει κάτι....
    Το πρόβλημα μου είναι πώς να μετατρέψω τη μεταβλητή μου έτσι ώστε να μπορώ όλο να το βάλω στο IN στο where του SQL μου γιατί ετσι δεν το δεχεται αφού είναι varchar......
    Καμία λύση ....???

    select DATEDIFF(dd,GetDate(),'20140731') AS EΠΟΜΕΝΕΣ_ΔΙΑΚΟΠΕΣ
  •  31-10-2009, 00:17 54854 σε απάντηση της 54843

    Απ: SQL Filters tips....

    Δες την sp_executesql. Με αυτήν ουσιαστικά, κατασκευάζεις το query σου ως string και το εκτελείς. Μπορείς να τη βάλεις μέσα στην SP και να κολλήσεις την παράμετρο στο κατάλληλο σημείο και να εκτελέσεις το αποτέλεσμα.


    Vir prudens non contra ventum mingit
  •  31-10-2009, 09:07 54855 σε απάντηση της 54854

    Απ: SQL Filters tips....

    Μπορώ να εκτελέσω την Stored Procedure μέσα σε ud Function ? Για SQL 2005 / 2000 συμβατότητα......

    select DATEDIFF(dd,GetDate(),'20140731') AS EΠΟΜΕΝΕΣ_ΔΙΑΚΟΠΕΣ
  •  01-11-2009, 21:21 54874 σε απάντηση της 54855

    Απ: SQL Filters tips....

    Μια προτεινόμενη λύση είναι η εξής:
    1.Φτιάχνεις function που μετατρέπει τις τιμές του ορίσματος ('1,2,34,56,4') σε πίνακα.
    Ένα παράδειγμα υλοποίησης βρίσκεται εδώ 
    2. Οπότε χρησιμοποιείς τον επιστρεφόμενο πίνακα (έστω @tmpTable) πλέον με Inner Join. 
    Δηλαδή το querry : SELECT x1,x2,...,x3 FROM table1 where id_op in(1,2,34,56,4)
    γράφεται:
    SELECT * 
    FROM table1 AS A 
    JOIN @tmpTable AS B
    ON A. id_op =B.ID
    όπου στο column ID του @tmpTable είναι οι τιμές του φίλτρου.
    Ευχαριστώ.

    Κώστας Τσιώλης
  •  01-11-2009, 22:41 54875 σε απάντηση της 54874

    Απ: SQL Filters tips....

    Σ Ευχαρηστώ πολύ.Είναι ακριβώς ότι έψαχνα.Stick out tongue

    select DATEDIFF(dd,GetDate(),'20140731') AS EΠΟΜΕΝΕΣ_ΔΙΑΚΟΠΕΣ
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems