Ο SQL Developer έχει προοδεύσει εντυπωσιακά σε σχέση με ένα παλαιότερο άρθρο όπου είχα καταγράψει τις πρώτες μου εντυπώσεις. Αποτελεί πια ένα ολοκληρωμένο, ισχυρό εργαλείο προγραμματισμού σε βάσεις δεδομένων (όχι μόνο Oracle αλλά και MySQL και SQL Server), παραγωγής reports (ακόμα και σε μορφή γραφημάτων) και απλής διαχείρισης (έτοιμα βασικά reports DBA, import/export δεδομένων, σύγκρισης μεταξύ σχημάτων, κ.α. ) Εξαιτίας της επιτυχίας του, ενσωμάτωσε ένα ξεχωριστό έως πρότινος προϊόν, το Oracle Migration Workbench, που επιχειρεί με αυτοματοποιημένο τρόπο να μεταφέρει (migrate) τρίτες ως προς την Oracle βάσεις. Η εργασία της μεταφοράς αποτελείται από διάφορα βήματα και περιγράφεται αναλυτικά στο σύστημα βοήθειας του SQL Developer. Αυτό που όμως είναι ενδιαφέρον, είναι η δυνατότητα άμεσης μετάφρασης ενός τμήματος κώδικα (π.χ. μιας stored procedure του SQL Server) σε PL/SQL με τη βοήθεια του Translation Scratch Editor.
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPxOiSroX_adu6bBl6su3sRiws9OMi-h4jx0M8L5NEXuBdLO1xfjLBnsuqNCQ99-GJr7tWb2d6iDrEOJSZePfp0I9Jej5IgA8oQHAdTnJmvCxmdmRzxuGF2o0khCrJp9BNA4jKww/s320/Screenshot-Oracle+SQL+Developer+:+Local_SQL.png)
Στο παράδειγμά μας, θα χρησιμοποιήσω μια σύνδεση στον SQL Server για να αντλήσω τις stored procedures, αν και κάτι τέτοιο δεν είναι απαραίτητο, αφού στο περιβάλλον του Translation Scratch Editor, μπορούμε να πληκτρολογήσουμε άμεσα T-SQL για να μεταφραστεί σε PL/SQL! Για να συνδεθούμε λοιπόν σε μια βάση του SQL Server, θα χρειαστούμε τους jTDS JDBC drivers που διατίθενται στο:
http://jtds.sourceforge.net/ Τοποθετούμε τη βιβλιοθήκη jar στον κατάλογο
$SQL_DEVELOPER_HOME/jdbc/lib και έπειτα την ορίζουμε στο περιβάλλον από την επιλογή Tools-->Preferences-->Database-->Third Party JDBC Drivers.
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjX82sc3mXXwwG-f_RHDefkgUEQt91Ndl4JoEhJpFa3vRwW7_WPpdnd5KIZ6yYYCSzpNffifZTuEvWDtJe8IZH0gtDyJB5ZfpQOv2TvB-Gj3nOdW_7cKHH7mpIW1AeSKW1wToA7uQ/s320/Screenshot-Preferences.png)
Στο επόμενο βήμα, ορίζουμε τις πληροφορίες σύνδεσης στη βάση μας:
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiE7kmt5_nFGn9gR_cMYieVwb7Fy_wLsh-NJqbpHQOXAZFZTVCxPdABVgypyRkLlS9cFfZQ0peEM2xYQuhoB9BQLwQSYWbkbZT4sLJDRr_pIXTR3gh4O_mdlSpjwlGnkk2NGJJDTQ/s320/database-connection.png)
και τώρα πια έχουμε πρόσβαση σε αυτήν. Φυσικά και μπορούμε να δούμε τη δομή της (πίνακες, procedures, triggers) όπως και να κάνουμε ανάπτυξη κώδικα.
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvUbTKifMEeIs7JQxtvB53LmsyEwh5To-U9Q7t6UvjURtUbXAQJFVFoo96SantJu8BiMvOApHZN2A4TmVhDV_fCFck3bJnzPw3bX6VZsBYG7D34tPbp_-aezkVq8BPmZm7rcVHfg/s320/Screenshot-Oracle+SQL+Developer+:+TABLE+dbo.Categories%40Local_SQL.png)
Διαλέγοντας τώρα μια stored procedure, μπορούμε να αντιγράψουμε τον κώδικα της στον Scratch Editor (μενού Migration-->Translation Scratch Editor) και αφότου επιλέξουμε τη γλώσσα εισόδου (π.χ. Τ-SQL για SQL Server, Access, MySQL) να πατήσουμε το κουμπί της μετάφρασης σε PL/SQL. Σίγουρα θα υπάρχουν πολύπλοκα statements που δεν θα μεταφραστούν όπως θα θέλαμε, αλλά ο scratch editor μας δίνει τη δυνατότητα να εξερευνήσουμε την παραγωγή του κώδικα σε PL/SQL, σε πραγματικό χρόνο, μεταβάλλοντας τη stored procedure εισόδου, χωρίς να ξεκινήσουμε μια μαζική διαδικασία migration. Μάλιστα, η μεταφρασμένη procedure μπορεί άμεσα να γίνει compile σε ένα Oracle σχήμα της επιλογής μας.