Προγραμματισμός

Λειτουργία Oracle CHR

Μία από τις παρουσιάσεις που μου άρεσαν στο Rocky Mountain Oracle Users Group (RMOUG) Training Days 2010 ήταν η παρουσίαση του Stephen Jackson "Χρησιμοποιώντας το SQL για τη δημιουργία SQL." Έχω χρησιμοποιήσει μερικές από τις τεχνικές που συζήτησε στην παρουσίασή του για να δημιουργήσω SQL SQL, αλλά ένα πράγμα που δεν σκέφτηκα να κάνω ήταν να χρησιμοποιήσω τη λειτουργία CHR για να κάνω τα σενάρια πιο ευανάγνωστα. Αν και αυτή η ανάρτηση επικεντρώνεται στη χρήση της λειτουργίας της συμβολοσειράς CHR της Oracle, άλλες βάσεις δεδομένων υποστηρίζουν τη λειτουργία CHR (ή CHAR).

Ένα παράδειγμα της χρησιμότητας του CHR είναι στη δημιουργία αποτελεσμάτων που περιλαμβάνουν χαρακτήρες που είναι σημαντικοί στο ίδιο το ερώτημα. Η χρήση του CHR επιτρέπει στον προγραμματιστή SQL να αποφύγει την ανάγκη διαφυγής αυτών των χαρακτήρων με σημασία σύνταξης ερωτήματος. Για παράδειγμα, για να εκτυπώσετε τα επώνυμα υπαλλήλων στο δείγμα σχήματος HR της Oracle με μεμονωμένα εισαγωγικά που περιβάλλουν τα επώνυμα, θα μπορούσε κανείς να γράψει ένα ερώτημα ως εξής:

επιλέξτε '' '' || επώνυμο || '' '' από υπαλλήλους. 

Τα τέσσερα μεμονωμένα εισαγωγικά ξεφεύγουν με επιτυχία από το εισαγωγικό τόσο πριν όσο και μετά το επώνυμο. Δυστυχώς, μπορεί να γίνει εύκολο να χαθείτε στα αποσπάσματα, ειδικά για πιο περίπλοκα ερωτήματα. Επειδή ο δεκαδικός κώδικας ASCII του 39 παράγει ένα μόνο απόσπασμα όταν μεταβιβάζεται στο CHR, η έκφραση CHR (39) μπορεί να χρησιμοποιηθεί αντ 'αυτού όπως φαίνεται παρακάτω:

επιλέξτε CHR (39) || επώνυμο || CHR (39) από υπαλλήλους · 

Για μένα, αυτό είναι πιο ευανάγνωστο. Ομοίως, ακόμη πιο δύσκολοι χαρακτήρες μπορούν να αναπαρασταθούν με τη λειτουργία CHR. Για παράδειγμα, ο Stephen επισήμανε στην παρουσίασή του ότι το CHR (10) μπορεί να χρησιμοποιηθεί για την εκτύπωση μιας νέας γραμμής στην έξοδο.

Μία από τις ενδιαφέρουσες ιδέες που συζήτησε ο Stephen ήταν η χρήση ενός απλού σεναρίου για την εμφάνιση των διαφόρων παραστάσεων χαρακτήρων που διατίθενται μέσω της λειτουργίας CHR. Κάποιος μπορεί πάντα να αναφέρει έναν πόρο όπως το Tech on the Net's ASCII Chart ή asciitable.com, αλλά είναι ενδιαφέρον να εμφανίζουμε απλώς τις παραστάσεις μέσω κώδικα:

- displayCHR.sql - - Εμφάνιση των χαρακτήρων που σχετίζονται με βασικούς και εκτεταμένους κωδικούς ASCII. - SET head off SET pagesize 0 SET lineize 120 SET trimspool on SET feedback off SET επαληθεύστε SET έξοδος διακομιστή σε μέγεθος 5000 BEGIN FOR i IN 32..255 loop Dbms_output.put_line (i || "|| chr (i)) ; ΤΕΛΟΣ βρόχος; ΤΕΛΟΣ; / 

Το παραπάνω απόσπασμα κώδικα, όταν εκτελείται στο SQL * Plus, θα εμφανίζει μεγάλο αριθμό χαρακτήρων που είναι διαθέσιμοι στο βασικό και εκτεταμένο σύνολο χαρακτήρων ASCII. Κάποιος μπορεί να χρησιμοποιήσει την εντολή καρούλι για να τυλίξει την έξοδο σε αρχείο. Στο μηχάνημά μου που βασίζεται στα Windows, ήμουν σε θέση να προβάλω αυτά τα δημιουργημένα σύμβολα στο αρχείο εξόδου με καύση χρησιμοποιώντας τη βασική εφαρμογή Notepad.

συμπέρασμα

Όπως επεσήμανε ο Stephen στην παρουσίασή του, η συνάρτηση CHR μπορεί να κάνει τα σενάρια SQL * Plus πιο ευανάγνωστα και διατηρήσιμα.

Αυτή η ιστορία, "Oracle CHR Function" δημοσιεύθηκε αρχικά από το JavaWorld.

$config[zx-auto] not found$config[zx-overlay] not found