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

 

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

Return expressions from function into columns

Îåêßíçóå áðü ôï ìÝëïò neoklis. Τελευταία δημοσίευση από το μέλος neoklis στις 21-04-2009, 10:25. Υπάρχουν 2 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  14-04-2009, 13:53 50088

    Return expressions from function into columns

    Καλησπέρα,

     

    Θέλω σε ένα Sql query να εκτελείται μια function η οποία θα υπολογίζει κάποια expressions και θα μου τα επιστρέφει σε columns. Πειραματίζομαι στο πως μπορεί να γίνει οπότε όποιες συμβουλές καλοδεχούμενες.

     

    Η function που εφτιαξα..

     

    ALTER FUNCTION dbo.Perf_test

          (

    @WcId char (10)

    ,@MatGroup varchar(10)

    ,@Mrp varchar (3)

    ,@Descr varchar(50)

          )

    RETURNS @table TABLE (Type varchar(4))

    AS

     

    BEGIN

          declare @Type as varchar(4)

          set @Type=dbo.Perf_categorize(@WcId,@MatGroup,@Mrp,@Descr)

     

          Insert @table

          Select @Type

          return

    END

     

    Και το query όπου και την καλώ..

     

    SELECT ID,WCID, Material_Group, MRP_Controller, Description,(select * from dbo.perf_test(WCID,Material_Group,MRP_Controller,Description))

    FROM PERF_Performance

     

    Αυτό που παρατηρώ είναι:

     

    α) εκτελείται κανονικά αλλά το column που μου επιστρέφει είναι No Column Name.

    b)όταν τροποποιήσω την function για να μου επιστρέψει περισότερα columns παίρνω το παρακάτω error

     

    Only one expression can be specified in the select list when the subquery is not introduced with EXISTS.

     

    Ευχαριστώ


    Dionisis
  •  15-04-2009, 10:36 50100 σε απάντηση της 50088

    Απ: Return expressions from function into columns

    Παιδιά εδώ χρειάζομαι τα φώτα σας.. μεγάλη σκάλα, προβολέα ότι έχει ο καθένας..

     

    Ασχολούμαι με ένα project αποδόσεων μηχανών. Σαν front-end θα χρησιμοποιήσω Access. Οι παράμετροι για κάθε μηχανή πολλοί και διαφορετικοί και πολλά και τα υπολογιζόμενα πεδία. Σκεφτόμουν λοιπόν για αρχή να φτιάξω ένα view με όλα τα κοινά πεδία για όλες τις μηχανές και κατόπιν με functions να υπολογίζω τα πεδία που θέλω. Εδώ ανακάλυψα τα subqueries. Προχωρόντας είδα ότι το view γινότανε τεράστιο και κυρίως θα ήτανε δυσκολοσυντήρητο. Άρχισα λοιπόν να κατεβάζω μυαλό για άλλη μία φορά (ευτυχώς που έχω μπόλικο). Θα μπορούσα λέω όλους τους υπολογισμούς μου να τους κάνω καλώντας μία function και να μου επιστρέφει τα πεδία μου έτοιμα και ωραία.. Μπράβο ρε Διονύση.. αυτό είναι.. και..

     

    SELECT Perf.ID,Perf.WCID,

          Perf.Material_Group,

          Perf.MRP_Controller,

          Perf.Description,

          Calc.Wcid,

          Calc.Type

     

    FROM

          PERF_Performance as Perf

    cross apply

          dbo.perf_test(Perf.WCID,Perf.Material_Group,Perf.MRP_Controller,Perf.Description) as Calc

     

    έλα όμως που ο χρήστης θα πρέπει να μπορεί να αλλάζει κάποια πεδία και να γίνεται επαναϋπολογισμός και με το παραπάνω selection δεν μπορεί να δουλέψει σε view. Τα βασικά μου πεδία είναι γύρω στα 40 και τα υπολογιζόμενα μαζί με σταθερές για όλες τις μηχανές κοντά στα 150. Δεν θέλω να πάω σε έναν τεράστιο πίνακα και θα ήθελα μια πιο ‘έξυπνη λύση’.. Έχει κάποιος έναν έστω φακό...;


    Dionisis
  •  21-04-2009, 10:25 50164 σε απάντηση της 50100

    Απ: Return expressions from function into columns

    Τελικά η λύση στο πρόβλημα μου ήταν η outer apply..

    SELECT Perf.ID,Perf.WCID,Perf.Material_Group,Perf.MRP_Controller,Perf.Description,Perf.Component_Flag,Perf.D,Perf.Length,calc.Type,calc.Vtakinmin FROM PERF_Performance as Perf Outer Apply dbo.perf_calc(Perf.ID,Perf.WCID,Perf.Material_Group,Perf.MRP_Controller,Perf.Description,Perf.Component_Flag,Perf.D,Perf.Length) as Calc


    Dionisis
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems