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

 

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

SQL Function και SQL Query Statement

Îåêßíçóå áðü ôï ìÝëïò neoklis. Τελευταία δημοσίευση από το μέλος KelMan στις 10-10-2008, 09:39. Υπάρχουν 4 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  09-10-2008, 09:58 45291

    SQL Function και SQL Query Statement

    Καλημέρα,

     

    Έφτιαξα την πρώτη μου SQL function και δουλεύει κανονικά όταν την κάνω execute. Το πρόβλημα παρουσιάζεται όταν την καλώ μέσα από SQL Query και μου γυρνάει λάθος αποτέλεσμα. Επειδή δεν μπορώ να καταλάβω τι φταίει παραθέτω query statement και function. Αυτό που θέλω να μου επιστρέψει είναι η τιμή του πεδίου AfinalCombo της πρώτης εγγραφής.

     

    Ευχαριστώ

     

     

    ALTER FUNCTION dbo.Is_A_FinalF(@xWorkGroup varchar(8),@xWorkCenter varchar(8),@xMrp varchar(3))

    returns bit

     

    as

     

    begin

              declare @a as varchar(8);

              declare @b as varchar(8);

              declare @c as bit;

              declare @return as bit

     

    set @return=0

     

    if (@xWorkGroup is not null) and @xWorkGroup<>''

              begin

                       declare WGr_cursor cursor for

                       select WorkGroup,AfinalCombo

                       from Work_Groups

                       where (WorkGroup=@xWorkGroup)

                       group by WorkGroup,AfinalCombo

             

                       open WGr_cursor

                       fetch next from WGr_cursor

                       into @a,@b

             

                       set @return=@b

             

                       close WGr_cursor

                       deallocate WGr_cursor

              end

             

    if (@xWorkCenter is not null) and @xWorkCenter<>''

              begin

                       declare WGr_cursor cursor for

                       select Workcenter,Mrp_Controller,AfinalCombo

                       from Work_Groups

                       where (Workcenter=@xWorkCenter) and (Mrp_Controller=@xMrp)

                      

                       open WGr_cursor

                       fetch next from WGr_cursor

                       into @a,@b,@c

             

                       set @return=@c

                      

                       close WGr_cursor

                       deallocate WGr_cursor

              end

     

    return (@return)

     

    end

    ___________________________________________

     

    select workcenter , workgroup,afinalcombo,dbo.Is_A_FinalF (workcenter,'','') as  expr from work_groups


    Dionisis
  •  09-10-2008, 10:17 45294 σε απάντηση της 45291

    Απ: SQL Function και SQL Query Statement

    Δεν μπορώ να καταλάβω τι προσπαθείς να κάνεις, τι τιμές παίρνεις και τι τιμές θα έπρεπε να παίρνεις, αλλά προς θεού, βγάλε τους cursors!

    Μπορείς εύκολα να πάρεις το αποτέλεσμα ενός query σε μεταβλητές λέγοντας:

    select @a=Workcenter,@b=Mrp_Controller,,@c=AfinalCombo
                       from Work_Groups
                       where (Workcenter=@xWorkCenter) and (Mrp_Controller=@xMrp)


    Vir prudens non contra ventum mingit
  •  09-10-2008, 10:58 45297 σε απάντηση της 45294

    Απ: SQL Function και SQL Query Statement

    Αυτό που θέλω να κάνω είναι το εξής. Εκτελώντας ένα Query, να μου φέρνει σε μία στήλη το αποτέλεσμα μίας Function. H τιμή του πεδίου afinalcombo είναι αυτή που θέλω να μου επιστρέφεται. Η function να μπορεί να εκτελέσει την αναζήτηση με δύο τρόπους. Είτε εισάγοντας μόνο την πρώτη παράμετρο, είτε εισάγοντας την δεύτερη και τρίτη παράμετρο. Βγάζοντας τους cursors και αντικαθιστώντας το query με αυτό που μου υπέδειξες η function εκτελείται κανονικά με execute. Δεν μπορώ να καταλάβω γιατί δεν εκτελείται σωστά όταν την καλώ μέσα από SQL Query.

     

    Η function αλλαγμένη μετά την υπόδειξη σου.

     

    ALTER FUNCTION dbo.Is_A_FinalF(@xWorkGroup varchar(8),@xWorkCenter varchar(8),@xMrp varchar(3))

    returns bit

     

    as

     

    begin

     

    declare @return as bit

     

    set @return=0

     

    if (@xWorkGroup is not null) and @xWorkGroup<>''

              begin

                       select @return=AfinalCombo

            from Work_Groups

            where (WorkGroup=@xWorkGroup)

              end

             

    if (@xWorkCenter is not null) and @xWorkCenter<>''

              begin

                       select @return=AfinalCombo

            from Work_Groups

            where (Workcenter=@xWorkCenter) and (Mrp_Controller=@xMrp)

              end

     

    return (@return)

     

    end

     

    Είναι σωστός ο τρόπος όπως καλώ την is_a_finalf μέσα από το query; Μου τα γυρνά όλα Null. Τρέχοντας την με execute από Visual Studio τρέχει κανονικά.

     

    select workcenter , workgroup,afinalcombo,dbo.Is_A_FinalF (workcenter,'','') as  expr

    from work_groups

     

     

    Μακάρι να έγινα πιο κατανοητός.. Confused


    Dionisis
  •  10-10-2008, 09:20 45335 σε απάντηση της 45297

    Απ: SQL Function και SQL Query Statement

    Το πρόβλημα λύθηκε.. Πέρναγα λάθος παράμετρο στην function. Αντι για το πεδίο workgroup πέρναγα το workcenter.. Είναι απίστευτο το πόσο μπορείς να ταλαιπωρηθείς από μερικά χαζά λάθη..

     

    Ευχαριστώ


    Dionisis
  •  10-10-2008, 09:39 45337 σε απάντηση της 45335

    Απ: SQL Function και SQL Query Statement

    Τουλάχιστον γλύτωσες από τα cursors Smile


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