thanospr Δημοσ. 17 Ιανουαρίου 2017 Δημοσ. 17 Ιανουαρίου 2017 Γεια σας.Ειμαι αρχαριος σχετικα με βασεις δεδομενων.Θελω να φτιαξω ενα trigger σε μια βαση στην oracle η οποια να βρισκει ποσα στοιχεια του πινακα εχουν μια συγκεκριμενη τιμη σε μια στηλη τους και να το αποθηκευω προσωρινα την ωρα που εκτελειται το trigger σε μια μεταβλητη number.Το θεμα μου ειναι οτι τρεχω αυτην την εντολη SELECT COUNT(1) FROM table WHERE table_Col=15 και μου εμφανιζει το αποτελεσμα αλλα ειναι σε μορφη πινακα και δεν μπορω να το καταχωρησω στην μεταβλητη.Υπαρχει καποιος τροπος που μπορει να γινει αυτο;
akis_fc Δημοσ. 18 Ιανουαρίου 2017 Δημοσ. 18 Ιανουαρίου 2017 Θα πρέπει να γράψεις κάτι της μορφής: declare my_variable NUMBER; -- Εδώ δηλώνεις τη μεταβλητή σου begin select count(1) into my_variable -- Πρέπει να ξέρεις τι κάνει το `select ... into` τότε μπορείς να το χρησιμοποιήσεις με μεταβλητές from table where table_Col=15; exception when no_data_found then -- exception σε triggers/procedures καθώς εκεί που τρέχουν συνήθως δεν κοιτάει κανένας οπότε ότι περισσότερο ελέγχεις τόσο καλύτερα my_variable := 0; dbms_output.put_line(my_variable); -- Για να σου εκτυπώσει την μεταβλητή σου end;
Highlander Δημοσ. 19 Ιανουαρίου 2017 Δημοσ. 19 Ιανουαρίου 2017 Δεν θα δουλέψει ; : UPDATE MyTable SET MyCountField = (SELECT COUNT(1) FROM MyOtherTable WHERE MyOtherTable.MyOtherField=15) Εκτός κι αν κάτι το κατάλαβα λάθος.
akis_fc Δημοσ. 19 Ιανουαρίου 2017 Δημοσ. 19 Ιανουαρίου 2017 Αν κατάλαβα καλά για μεταβλητή μιλάει δεν υπάρχει ο mytable.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα