PL/SQL.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
ΕΙΣΑΓΩΓΗ ΣΤΗΝ PHP. Τι θα μάθουμε;  Να καταλάβουμε τι είναι η PHP και πώς δουλεύουν τα PHP scripts  Τι χρειάζεται για να ξεκινήσουμε με την PHP  Να.
Advertisements

Επιμέλεια: ΘΟΔΩΡΗΣ ΜΑΝΑΒΗΣ
Δομές Διακλάδωσης Μην ελπίζεις ότι θα ξεφύγεις αν κάνεις κάποιο κακό. Γιατί κι αν ξεφύγεις απ’ τη προσοχή των άλλων, θα υποπέσεις στην αντίληψη της συνείδησής.
ΕΣΔ 232: Οργάνωση Δεδομένων στη Κοινωνία της Πληροφορίας © 2013 Nicolas Tsapatsoulis Εισαγωγή στην SQL ΕΣΔ232 – Οργάνωση Δεδομένων στη Κοινωνία της Πληροφορίας.
MySQL + Γλώσσα Προγραμματισμού
Βάσεις Δεδομένων.
1 Copyright © 2006 Quality & Reliability SQL 1-2.
Γλώσσες για ημι-δομημένα δεδομένα (ΗΔΔ)  XPath  XQuery  XSLT (eXtensible Stylesheet Language for Transformations)
Τεχνολογία ΛογισμικούSlide 1 Έλεγχος Καταψύκτη (Ada) Τεχνολογία ΛογισμικούSlide 39 with Pump, Temperature_dial, Sensor, Globals, Alarm; use Globals ; procedure.
Προγραμματισμός PASCAL Πληροφορική Γ' Λυκείου μέρος γ
Δομές Διακλάδωσης.
Ορισμοί Σχεσιακού Μοντέλου και (απλές)Τροποποιήσεις Σχέσεων στην SQL
Αποθηκευμένες Διαδικασίες και Εναύσματα Δρ. Παναγιώτης Συμεωνίδης.
ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΜΗΧΑΝΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΒΙΟΜΗΧΑΝΙΑΣ Διάλεξη 5: Επαναληπτικές και εξωτερικές συναρτήσεις και διαδικασίες Εαρινό εξάμηνο 2009.
JAVA και SQL Δαμιανός Χατζηαντωνίου
Entity-Relationship Παραδείγματα Πληροφοριακά Συστήματα και Βάσεις Δεδομένων Φροντιστήριο 1 Δαμιανός Χατζηαντωνίου.
ORACLE PL/SQL Cursors Μέρος 1.
1919 Αντικειμενο-σχεσιακά ΣΔΒΔ  Εμφωλιασμένες Σχέσεις  Το Πρότυπο SQL:1999 (SQL3)  Σύγκριση Συστημάτων.
ORACLE PL/SQL Records. Εγγραφές (Records) DECLARE TYPE t_Rec1Type IS RECORD ( Field1 NUMBER, Field2 VARCHAR2(5)); TYPE t_Rec2Type IS RECORD ( Field1 NUMBER,
9 Η Γλώσσα SQL Ορισμός Δεδομένων (data definition)
Προγραμματισμός ΙΙ Διάλεξη #5: Εντολές Ανάθεσης Εντολές Συνθήκης Δρ. Νικ. Λιόλιος.
ORACLE PL/SQL Εξαιρέσεις Exceptions. ΟΡΙΣΜΟΣ Μια εξαίρεση (exception) είναι ένας δείκτης που ενεργοποιείται κατά την εκτέλεση του προγράμματος.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά1 Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL.
Διαφάνειες παρουσίασης Πίνακες (συνέχεια) Αριθμητικοί υπολογισμοί Αναδρομή.
ORACLE PL/SQL Άρης Στουγιαννίδης. ΒΡΟΧΟΣ ΜΕ ΜΕΤΡΗΤΗ FOR REM forloop.sql REM This is an example of a FOR loop. BEGIN FOR v_Counter IN LOOP INSERT.
ΕΡΩΤΗΜΑΤΑ ΕΠΙΛΟΓΗΣ 2 ΜΑΘΗΜΑ 8. ΑΠΑΛΟΙΦΗ ΔΙΠΛΟΕΓΓΡΑΦΩΝ DISTINCT Μπορούμε να απαλείψουμε τις διπλοεγγραφές που μας επιστρέφονται και που οφείλονται στην.
9 Η Γλώσσα SQL  Εισαγωγή – Βασικές Έννοιες  Τύποι Δεδομένων  Ορισμός Δεδομένων  Χειρισμός Δεδομένων.
9 Η Γλώσσα SQL  Εισαγωγή – Βασικές Έννοιες  Τύποι Δεδομένων  Ορισμός Δεδομένων (data definition)  Χειρισμός Δεδομένων (data manipulation)
Copyright © 2006 – Quality & Reliability SA PL/SQL TRIGGERS ΜΕΡΟΣ 1.
Lab 3: Sorted List ΕΠΛ231-Δομές Δεδομένων και Αλγόριθμοι115/4/2015.
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
Τεχνολογία ΛογισμικούSlide 1 Σχεδιασμός Λογισμικού ATM loop Print_input_message (” Welcome - Please enter your card”) ; exit when Card_input ; end loop.
ΕΠΛ 342 – Βάσεις Δεδομένων Εργαστήριο 4 ο SQL - Queries Ιωάννα Συρίμη
ΘΠ06 - Μεταγλωττιστές Ενδιάμεσος Κώδικας – Μεταφραστικά Σχήματα.
Βάσεις Δεδομένων I (Θ) Ενότητα 11: Ενιαίο παράδειγμα σχεδίασης σχεσιακής βάσης δεδομένων και υλοποίησης με Γλώσσα SQL Χ. Σκουρλάς Τμήμα Μηχανικών Πληροφορικής.
Βάσεις Δεδομένων II (Θ) Ενότητα 11: SQL διαγνωστικά σφαλμάτων (SQL error diagnostics), δήλωση Get Diagnostics Χ. Σκουρλάς Τμήμα Μηχανικών Πληροφορικής.
Βάσεις Δεδομένων II (Θ) Ενότητα 6: Τεχνολογία PL/SQL - cursors Χ. Σκουρλάς Τμήμα Μηχανικών Πληροφορικής ΤΕ Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας Το.
ORACLE PL/SQL Cursors Μέρος 2. Cursors 2 Cursors με παραμέτρους Εισαγωγή παραμέτρου κατά την εκτέλεση Πολλά ανοίγματα με διαφορετικές παραμέτρους.
Βάσεις Δεδομένων I (Θ) Ενότητα 8: Εισαγωγή στην υλοποίηση σχεσιακών βάσεων δεδομένων Χ. Σκουρλάς Τμήμα Μηχανικών Πληροφορικής ΤΕ Ανοικτά Ακαδημαϊκά Μαθήματα.
Βάσεις Δεδομένων I (Θ) Ενότητα 9: Yλοποίηση σχεσιακών βάσεων δεδομένων - Σύνθετες εντολές SQL Χ. Σκουρλάς Τμήμα Μηχανικών Πληροφορικής ΤΕ Ανοικτά Ακαδημαϊκά.
Βάσεις Δεδομένων I Ενότητα 8: Εισαγωγή στην υλοποίηση σχεσιακών βάσεων δεδομένων Χ. Σκουρλάς Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας Το περιεχόμενο.
Γλώσσες Προγραμματισμού Μεταγλωττιστές Πίνακας Συμβόλων Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Ηλίας Σακελλαρίου.
Βάσεις Δεδομένων Κεφ. 1 Πλεονεκτήματα Β.Δ. έναντι αρχείων Βασικές λειτουργίες Β.Δ. Εφαρμογές Β.Δ. στην καθημερινή ζωή.
Επανάληψη και λυμένα θέματα του μαθήματος «Βάσεις Δεδομένων ΙΙ» για τη διδασκαλία του στo Τμήμα Πληροφορικής του ΤΕΙ Αθήνας. Διδάσκων: Χ. Σκουρλάς,
Περιγραφή Ενότητας Σκοπός του μαθήματος είναι να παρουσιάσει τις απαραίτητες έννοιες ώστε οι φοιτητές να κατανοήσουν την τεχνολογία των βάσεων δεδοµένων.
Βάσεις Δεδομένων και Ευφυή Πληροφοριακά Συστήματα Επιχειρηματικότητας
Βάσεις Δεδομένων Ι 4η διάλεξη
Σύντομη περιγραφή Μια περιήγηση σε αφυπνιζόμενα προγράμματα (triggers), δηλαδή προγράμματα ενεργοποιούμενα από ενέργειες INSERT, UPDATE, DELETE στη βάση.
Περιγραφή Ενότητας Σκοπός του μαθήματος αυτού και κεντρικός σκοπός του μαθήματος των Βάσεων Δεδομένων Ι είναι η παρουσίαση των απαραίτητων εννοιών ώστε.
Θερινό Σχολείο, 14 – 20 Ιουλίου 2014
Έλεγχος λογισμικού Ποιότητα Λογισμικού Black Box testing
Εφαρμογές Υπολογιστών
Βάσεις Δεδομένων και web-based Εφαρμογές
9 Η Γλώσσα SQL Εισαγωγή – Βασικές Έννοιες Τύποι Δεδομένων
Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL
Περιγραφή Ενότητας Σκοπός του μαθήματος είναι η παρουσίαση των απαραίτητων εννοιών αλλά και των δηλώσεων SQL ώστε οι φοιτητές να κατανοήσουν σε κάποιο.
Βάσεις Δεδομένων Κωδικός Μαθήματος: MK741
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Βάσεις Δεδομένων ΙΙ Triggers
Βάσεις Δεδομένων και web-based Εφαρμογές
Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας
Αντικειμενο-σχεσιακά ΣΔΒΔ
Βάσεις Δεδομένων ΙΙ (SQL error diagnostics), δήλωση Get Diagnostics
Βάσεις Δεδομένων ΙΙ Ενότητα 6: Τεχνολογία PL/SQL - cursors Χ. Σκουρλάς
Σχεσιακεσ βασεισ δεδομενων
Βάσεις Δεδομένων ΙΙ Ενότητα 5: Μελέτη περιπτώσεως:
ΠΑΡΑΔΕΙΓΜΑΤΑ SQL Ή ΠΑΡΑΔΕΙΓΜΑΤΑ SQL Ή
Ανοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο Δυτικής Αττικής
Database Programming Using Oracle 11g
Μεταγράφημα παρουσίασης:

PL/SQL

Βασική Δομή DECLARE /* Μεταβλητές, τύποι και τοπικά υποπρογράμματα. */ BEGIN /* Διαδικασίες και οι εντολές PL/SQL, άλλα blocks */ /* Είναι το μόνο τμήμα που απαιτείται. */ EXCEPTION /* Εντολές χειρισμού λαθών. */ END;

Βασική Δομή (2) Για να εκτελέσουμε ένα πρόγραμμα PL/SQL γράφουμε μετά τον κώδικα: Μια γραμμή που περιέχει μόνο μία τελεία(“.”). Μια γραμμή με την λέξη run; Η εκτέλεση γίνεται: Γράφοντας τις εντολές στην γραμμή εντολών της sqlplus. Γράφοντας τον κώδικα σε ένα αρχείο και καλώντας το από την sqlplus (@codefile.sql).

Μεταβλητές και τύποι Τύποι μεταβλητών: Τύπος της sqlplus για προσδιορισμό των στηλών ενός πίνακα. Ίδιος με τον τύπο μίας στήλης ενός πίνακα. NUMBER (ακέραιοι ή πραγματικοί αριθμοί). BOOLEAN. Εγγραφή με πολλά πεδία (record). Η αρχική τιμή μεταβλητών είναι NULL. Οι μεταβλητές δεν πρέπει να έχουν ίδιο όνομα με στήλες πινάκων. Στις μεταβλητές ανατίθεται τιμή με τον τελεστή “:=“.

Μεταβλητές και τύποι (παραδείγματα) DECLARE amount NUMBER(7,3); price NUMBER; myBeer varchar(30); purchaseDate DATE; yourBeer Beers.name%TYPE; isGood BOOLEAN; beerTuple Beers%ROWTYPE;

Μεταβλητές και τύποι (παραδείγματα) (2) DECLARE price NUMBER := 3; myBeer varchar(30); BEGIN price := price + 2; myBeer := ‘Some ‘ || ‘Beer’; END; . run;

Εντολές SQL στην PL/SQL SELECT INSERT UPDATE DELETE Εντολές SQL που δεν επιτρέπονται: CREATE DROP ALTER

Εντολές SQL στην PL/SQL (παράδειγμα) Αρχικός πίνακας T: col1 col2 ------------------ 1 3 2 4 PL/SQL κώδικας: DECLARE a T.col1%TYPE; b T. col2%TYPE; BEGIN SELECT col1, col2 INTO a,b FROM T WHERE col1 > 1; INSERT INTO T VALUES(b, a); END; . run;

Εντολές SQL στην PL/SQL (παράδειγμα συνέχεια) Πίνακας T μετά την εκτέλεση του PL/SQL κώδικα: col1 col2 -------------- 1 3 2 4 4 2

Εντολές SQL στην PL/SQL (2) Η PL/SQL μας επιτρέπει να εκτιμήσουμε τι συνέβη με την εκτέλεση μιας SQL εντολής: SQL%ROWCOUNT: ο αριθμός των γραμμών που επεξεργάστηκε η εντολή. SQL%FOUND: TRUE αν επεξεργάστηκε τουλάχιστον μία γραμμή. SQL%NOTFOUND: TRUE αν δεν επεξεργάστηκε καμία γραμμή.

Εντολές SQL στην PL/SQL (παράδειγμα 2) DECLARE rowsDeleted NUMBER; BEGIN DELETE FROM dept WHERE deptno = 50; rowsDeleted := SQL%ROWCOUNT; INSERT INTO delHistory VALUES(‘DEPT’, rowsDeleted, SYSDATE); END; . run;

Χειρισμός λαθών Σύνταξη: EXCEPTION WHEN exception-identifier THEN actions; Αναγνωριστικά λαθών στην PL/SQL: DUP_VAL_ON_INDEX INVALID_CURSOR INVALID_NUMBER LOGIN_DENIED NO_DATA_FOUND

Χειρισμός λαθών (2) NOT_LOGGED_ON PROGRAM_ERROR STORAGE_ERROR TIMEOUT_ON_RESOURCE TOO_MANY_ROWS VALUE_ERROR ZERO_DIVIDE CURSOR_ALREADY_OPEN TRANSACTION_BACKED_OUT

Χειρισμός λαθών (παράδειγμα) DECLARE v_ename emp.ename%TYPE; v_job emp.job%TYPE; BEGIN SELECT ename, job INTO v_ename, v_job FROM emp WHERE hire_date BETWEEN ‘01-JAN-04’ AND ‘31-DEC-04’; ..... EXCEPTION WHEN NO_DATA_FOUND THEN INSERT INTO err_tab VALUES(‘nobody in 04’); WHEN TOO_MANY_ROWS THEN INSERT INTO err_tab VALUES(‘More than one person in 04’); END; . run;

Έλεγχος ροής Η εντολή IF Σύνταξη: IF <condition> THEN <statement-list> ELSE <statement-list> END IF; ή IF <condition1> THEN <statement-list> ELSIF <condition_2> THEN <statement-list> ............ ELSIF <condition_n> THEN <statement-list>

Η εντολή IF (παράδειγμα) DECLARE a NUMBER; b NUMBER; BEGIN SELECT e,f INTO a, b FROM T WHERE e > 1; IF b=1 THEN INSERT INTO T VALUES(b, a); ELSE INSERT INTO T VALUES(b+10, a+10); END IF; END; . run;

Έλεγχος ροής (2) Η εντολή LOOP Σύνταξη: LOOP <loop-body> /* λίστα από PL/SQL */ /* εντολές */ END LOOP; Τουλάχιστον μία από τις εντολές στο loop-body πρέπει να είναι της μορφής: EXIT WHEN <condition>;

Η εντολή LOOP (παράδειγμα) DECLARE i NUMBER := 1; BEGIN LOOP INSERT INTO T VALUES(i, i); i := i + 1; EXIT WHEN i > 100; END LOOP; END; . run;

Έλεγχος ροής (3) Η εντολή WHILE Σύνταξη: WHILE <condition> LOOP <loop-body> END LOOP;

Η εντολή WHILE (παράδειγμα) DECLARE i NUMBER := 1; BEGIN WHILE i <= 100 LOOP INSERT INTO T VALUES(i, i); i := i + 1; END LOOP; END; . run;

Έλεγχος ροής(4) Η εντολή FOR Σύνταξη: FOR <var> IN <start>..<finish> LOOP <lop-body> END LOOP; Η μεταβλητή var είναι οποιαδήποτε μεταβλητή, είναι τοπική το σώμα του βρόγχου και δεν χρειάζεται να δηλωθεί. Τα <start> και <finish> είναι σταθερές.

Η εντολή FOR (παράδειγμα) DECLARE i NUMBER; BEGIN FOR i IN 1..100 LOOP INSERT INTO T VALUES(i, i); END LOOP; END; . run;

Κέρσορες (Cursors) Μεταβλητή όπου αποθηκεύουμε ν-άδες κάποιας σχέσης (πίνακας ή αποτέλεσμα ερώτησης). Μπορούμε να διαβάσουμε σειριακά και να επεξεργαστούμε τις τιμές κάθε στοιχείου.

Κέρσορες (Cursors) (2) Οι κέρσορες ελέγχονται μέσω τεσσάρων διαφορετικών τύπων actions: DECLARE: δηλώνει των κέρσορα και την ερώτηση SQL που θα εκτελεστεί. OPEN: εκτελεί την ερώτηση SQL και «γεμίζει» τις γραμμές του κέρσορα. FETCH: φορτώνει τιμές τις τρέχουσας γραμμής του κέρσορα σε μεταβλητές και μετακινεί τον δείκτη του κέρσορα στην επόμενη γραμμή. CLOSE: κλείνει τον κέρσορα (ελευθερώνει τη μνήμη).

Κέρσορες (Cursors)(3) Δήλωση του κέρσορα – σύνταξη: CURSOR identifier IS query-expression; identifier είναι το όνομα του κέρσορα. query-expression είναι μια SELECT εντολή της SQL. Άνοιγμα κέρσορα – σύνταξη: OPEN cursor-identifier; Κλείσιμο κέρσορα – σύνταξη: CLOSE cursor-identifier; FETCH – σύνταξη: FETCH cursor-identifier INTO var, var, ……

Παίρνοντας πληροφορίες για τους κέρσορες Τιμές ελέγχου: FOUND: TRUE αν η τελευταία εντολή FETCH βρήκε μία γραμμή στον κέρσορα. NOTFOUND: το αντίθετο του FOUND. ROWCOUNT: επιστρέφει τον αριθμό των γραμμών (records) του κέρσορα. ISOPEN: TRUE αν ο κέρσορας είναι ανοικτός (έχει εκτελεστεί η εντολή OPEN).

Κέρσορες (παράδειγμα) DECLARE a T.e%TYPE; b T.f%TYPE; CURSOR Tcursor IS SELECT e, f FROM T WHERE e < f FOR UPDATE; /*FOR UPDATE OF table*/ BEGIN OPEN Tcursor; LOOP FETCH Tcursor INTO a, b; EXIT WHEN Tcursor%NOTFOUND; DELETE FROM T WHERE CURRENT OF Tcursor; INSERT INTO T VALUES(b , a); END LOOP; CLOSE Tcursor; END; . Run;

Διαδικασίες (procedures) Οι διαδικασίες είναι παρόμοιες με αυτές σε άλλες γλώσσες προγραμματισμού. Παράδειγμα: SQL κομμάτι CREATE TABLE T( a INTEGER, b VARCHAR(10)); PL/SQL CREATE PROCEDURE addtuple1(i IN NUMBER) AS BEGIN INSERT INTO T VALUES(i, ‘xxx’); END addtuple1; . run;

Διαδικασίες (2) Σύνταξη: CREATE PROCEDURE proc-name (<param-list>)AS <local-var-declarations> BEGIN <procedure-body> END proc_name; . run;

Διαδικασίες (3) proc-name: όνομα της διαδικασίας. <param-list>: param-id mode type, …. param-id είναι το όνομα παραμέτρου. Mode είναι ένα από: IN μόνο ανάγνωση. OUT μόνο εγγραφή. INOUT εγγραφή και ανάγνωση. type είναι ο τύπος της μεταβλητής. Οι τύποι των μεταβλητών δεν επιτρέπεται να έχουν όρια.

Διαδικασίες (4) Η εντολή run στο τέλος απλώς δημιουργεί τη διαδικασία, δεν την εκτελεί. Η εκτέλεση γίνεται σε ένα άλλο PL/SQL block ως εξής: BEGIN addtuple1(99); END; . run;

Διαδικασίες (παράδειγμα) CREATE PROCEDURE addtuple2( x T.a%TYPE, y T.b%TYPE) AS BEGIN INSERT INTO T VALUES(x, y); END addtuple2; . run; addtuple2(10, ‘abc’); END;

Διαδικασίες (παράδειγμα (2)) CREATE TABLE T(a INTEGER, b INTEGER); CREATE PROCEDURE addtuple3( a NUMBER, b OUT NUMBER) AS BEGIN b := 4; INSERT INTO T VALUES(a, b); END; . run; DECLARE v NUMBER; addtuple3(10, v);

Συναρτήσεις Σύνταξη: CREATE FUNCTION fun-name (<param-list>) RETURN <return-type> AS <local-var-declarations> BEGIN <procedure-body> END fun-name; . run;

Συναρτήσεις (2) fun-name: όνομα της συνάρτησης. <param-list>: όπως στην διαδικασία <return-type>: τύπος μεταβλητής που επιστρέφεται. Στο σώμα της συνάρτησης (<procedure-body>) πρέπει να υπάρχει η εντολή RETURN <expression>;

Διαδικασίες - Συναρτήσεις Για να βρούμε ποιες διαδικασίες ή συναρτήσεις έχουμε δημιουργήσει πρέπει να γράψουμε τα εξής στην SQL: SELECT object_type, object_name FROM user_objects WHERE object_type = ‘PROCEDURE’ OR object_type = ‘FUNCTION’ ; Για να διαγράψουμε μια διαδικασία ή συνάρτηση: DROP procedure <procedure_name>; DROP function <function_name>;

Ανακαλύπτοντας λάθη Η PL/SQL δεν σας λέει πάντα για τα λάθη μεταγλώττισης. Δίνει ένα απλό μήνυμα “procedure created with compilation errors”. Για να δούμε τα λάθη δίνουμε την εντολή: show errors procedure <procedure_name>;

Εκτυπώνοντας μεταβλητές Μία λύση είναι να την αποθηκεύσουμε σε έναν πίνακα και μετά να εκτελέσουμε στην SQL την εντολή SELECT. Να κάνουμε το εξής: Δηλώνουμε μια bind μεταβλητή: VARIABLE <name> <type> ……. BEGIN PRINT :<name>;

Εκτυπώνοντας μεταβλητές (2) Type μπορεί να είναι μόνο ένα από τα τρία: NUMBER. CHAR. CHAR(n). Μπορούμε να αναθέσουμε τιμή στην μεταβλητή σε μία ακόλουθη PL/SQL δήλωση αλλά πρέπει να βάλουμε το πρόθεμα “:” πριν από τη δήλωση. Παράδειγμα: VARIABLE x NUMBER BEGIN :x := 1; END; . run; PRINT :x;