BEGIN
    -- Création de la table Client
    EXECUTE IMMEDIATE '
    CREATE TABLE Client (
        code_cli VARCHAR2(5) PRIMARY KEY,
        nom VARCHAR2(50),
        prenom VARCHAR2(50),
        ville VARCHAR2(50),
        age NUMBER(3)
    )';

    -- Insertion des données dans la table Client
    EXECUTE IMMEDIATE 'INSERT INTO Client (code_cli, nom, prenom, ville, age) VALUES (''C11'', ''ABBADI'', ''Mohamed'', ''Tanger'', 20)';
    EXECUTE IMMEDIATE 'INSERT INTO Client (code_cli, nom, prenom, ville, age) VALUES (''C12'', ''BARGHDADI'', ''Salima'', ''Tetouan'', 19)';
    EXECUTE IMMEDIATE 'INSERT INTO Client (code_cli, nom, prenom, ville, age) VALUES (''C13'', ''ELALAQUI'', ''Samir'', ''Tanger'', 21)';
    EXECUTE IMMEDIATE 'INSERT INTO Client (code_cli, nom, prenom, ville, age) VALUES (''C14'', ''KRAIMI'', ''Mounir'', ''Tanger'', 25)';
    EXECUTE IMMEDIATE 'INSERT INTO Client (code_cli, nom, prenom, ville, age) VALUES (''C15'', ''ELBOUDALI'', ''Latifa'', ''Casa'', 35)';
    EXECUTE IMMEDIATE 'INSERT INTO Client (code_cli, nom, prenom, ville, age) VALUES (''C16'', ''BAKKALI'', ''Hajar'', ''Marrakech'', 24)';

    -- Création de la table Commande
    EXECUTE IMMEDIATE '
    CREATE TABLE Commande (
        num_cmd NUMBER PRIMARY KEY,
        date_cmd DATE,
        code_cli VARCHAR2(5),
        FOREIGN KEY (code_cli) REFERENCES Client (code_cli)
    )';

    -- Insertion des données dans la table Commande
    EXECUTE IMMEDIATE 'INSERT INTO Commande (num_cmd, date_cmd, code_cli) VALUES (1, TO_DATE(''20-05-2010'', ''DD-MM-YYYY''), ''C11'')';
    EXECUTE IMMEDIATE 'INSERT INTO Commande (num_cmd, date_cmd, code_cli) VALUES (2, TO_DATE(''20-05-2010'', ''DD-MM-YYYY''), ''C12'')';
    EXECUTE IMMEDIATE 'INSERT INTO Commande (num_cmd, date_cmd, code_cli) VALUES (3, TO_DATE(''01-05-2010'', ''DD-MM-YYYY''), ''C11'')';
    EXECUTE IMMEDIATE 'INSERT INTO Commande (num_cmd, date_cmd, code_cli) VALUES (4, TO_DATE(''28-05-2010'', ''DD-MM-YYYY''), ''C11'')';
    EXECUTE IMMEDIATE 'INSERT INTO Commande (num_cmd, date_cmd, code_cli) VALUES (5, TO_DATE(''28-05-2010'', ''DD-MM-YYYY''), ''C13'')';
    EXECUTE IMMEDIATE 'INSERT INTO Commande (num_cmd, date_cmd, code_cli) VALUES (6, TO_DATE(''28-05-2010'', ''DD-MM-YYYY''), ''C13'')';
    EXECUTE IMMEDIATE 'INSERT INTO Commande (num_cmd, date_cmd, code_cli) VALUES (7, TO_DATE(''08-05-2010'', ''DD-MM-YYYY''), ''C13'')';
    EXECUTE IMMEDIATE 'INSERT INTO Commande (num_cmd, date_cmd, code_cli) VALUES (8, TO_DATE(''21-05-2010'', ''DD-MM-YYYY''), ''C13'')';
    EXECUTE IMMEDIATE 'INSERT INTO Commande (num_cmd, date_cmd, code_cli) VALUES (9, TO_DATE(''18-05-2010'', ''DD-MM-YYYY''), ''C11'')';
    EXECUTE IMMEDIATE 'INSERT INTO Commande (num_cmd, date_cmd, code_cli) VALUES (10, TO_DATE(''01-06-2010'', ''DD-MM-YYYY''), ''C14'')';
    EXECUTE IMMEDIATE 'INSERT INTO Commande (num_cmd, date_cmd, code_cli) VALUES (11, TO_DATE(''15-05-2010'', ''DD-MM-YYYY''), ''C12'')';
    EXECUTE IMMEDIATE 'INSERT INTO Commande (num_cmd, date_cmd, code_cli) VALUES (12, TO_DATE(''22-05-2010'', ''DD-MM-YYYY''), ''C14'')';
    EXECUTE IMMEDIATE 'INSERT INTO Commande (num_cmd, date_cmd, code_cli) VALUES (13, TO_DATE(''20-05-2010'', ''DD-MM-YYYY''), ''C14'')';

    -- Création de la table Produit
    EXECUTE IMMEDIATE '
    CREATE TABLE Produit (
        code_art NUMBER PRIMARY KEY,
        designation VARCHAR2(50),
        qte_st NUMBER,
        pu NUMBER
    )';

    -- Insertion des données dans la table Produit
    EXECUTE IMMEDIATE 'INSERT INTO Produit (code_art, designation, qte_st, pu) VALUES (1, ''PC'', 12, 123)';
    EXECUTE IMMEDIATE 'INSERT INTO Produit (code_art, designation, qte_st, pu) VALUES (2, ''Imprimante'', 23, 4578)';
    EXECUTE IMMEDIATE 'INSERT INTO Produit (code_art, designation, qte_st, pu) VALUES (3, ''Souris'', 243, 15)';
    EXECUTE IMMEDIATE 'INSERT INTO Produit (code_art, designation, qte_st, pu) VALUES (4, ''Clavier'', 50, 60)';
    EXECUTE IMMEDIATE 'INSERT INTO Produit (code_art, designation, qte_st, pu) VALUES (5, ''Scanner'', 34, 500)';
    EXECUTE IMMEDIATE 'INSERT INTO Produit (code_art, designation, qte_st, pu) VALUES (6, ''Bureau'', 34, 1500)';
    EXECUTE IMMEDIATE 'INSERT INTO Produit (code_art, designation, qte_st, pu) VALUES (7, ''Projecteur'', 10, 10000)';

    -- Création de la table detail_cmmande
    EXECUTE IMMEDIATE '
    CREATE TABLE detail_cmmande (
        num NUMBER,
        ref NUMBER,
        qte NUMBER,
        PRIMARY KEY (num, ref),
        FOREIGN KEY (num) REFERENCES Commande (num_cmd),
        FOREIGN KEY (ref) REFERENCES Produit (code_art)
    )';

    -- Insertion des données dans la table detail_cmmande
    EXECUTE IMMEDIATE 'INSERT INTO detail_cmmande (num, ref, qte) VALUES (1, 1, 10)';
    EXECUTE IMMEDIATE 'INSERT INTO detail_cmmande (num, ref, qte) VALUES (2, 1, 12)';
    EXECUTE IMMEDIATE 'INSERT INTO detail_cmmande (num, ref, qte) VALUES (3, 1, 17)';
    EXECUTE IMMEDIATE 'INSERT INTO detail_cmmande (num, ref, qte) VALUES (4, 2, 2)';
    EXECUTE IMMEDIATE 'INSERT INTO detail_cmmande (num, ref, qte) VALUES (2, 2, 1)';
    EXECUTE IMMEDIATE 'INSERT INTO detail_cmmande (num, ref, qte) VALUES (1, 4, 1)';
    EXECUTE IMMEDIATE 'INSERT INTO detail_cmmande (num, ref, qte) VALUES (2, 3, 1)';
    EXECUTE IMMEDIATE 'INSERT INTO detail_cmmande (num, ref, qte) VALUES (1, 3, 1)';
    EXECUTE IMMEDIATE 'INSERT INTO detail_cmmande (num, ref, qte) VALUES (3, 2, 4)';
    EXECUTE IMMEDIATE 'INSERT INTO detail_cmmande (num, ref, qte) VALUES (3, 4, 2)';
    EXECUTE IMMEDIATE 'INSERT INTO detail_cmmande (num, ref, qte) VALUES (5, 5, 12)';
    EXECUTE IMMEDIATE 'INSERT INTO detail_cmmande (num, ref, qte) VALUES (1, 6, 2)';

    COMMIT;
END;
/
---------------------------------------------------------------------------------------
SET SERVEROUTPUT ON;

-- create or replace function ajout_modif(
--   v_code_cli in  Client.code_cli%TYPE,
--   v_nom in Client.nom%TYPE,
--   v_prenom in  Client.prenom%TYPE, 
--   v_ville in Client.ville%TYPE, 
--   v_age in Client.age%TYPE
--   )return VARCHAR2 
--   is
  
--   CURSOR CODE is 
--   SELECT code_cli from Client where code_cli=v_code_cli; 
--   BEGIN
--   open CODE;
--   FETCH cur_client INTO rec_client;
--   if CODE%FOUND then
--     UPDATE Client SET cli.nom=v_nom,cli.prenom=v_prenom,cli.ville=v_ville,cli.age=v_age
--     WHERE code_cli = v_code_cli;
--     close CODE;
--     return 'UPDATE AVEC SUCCES';
--     ELSE 
--     INSERT INTO Client(code_cli, nom, prenom, ville, age) 
--     VALUES (v_code_cli,v_nom,v_prenom,v_ville,v_age);
--     close CODE;
--     return 'INSERTION AVEC SUCCES';
--     END IF;
--   END;
--   /

---------------------------------------------------------------------------------------

create or replace procedure collect_name(
p_code in Client.code_cli%TYPE
) IS
rec_nom Client.nom%TYPE;
BEGIN
SELECT nom into rec_nom from Client 
WHERE code_cli=p_code;
dbms_output.put_line(rec_nom);
END;
/

 
by

PL/SQL Online Compiler

Write, Run & Share PL/SQL code online using OneCompiler's Oracle PL/SQL online editor and compiler for free. It's one of the robust, feature-rich online editor and compiler for Oracle PL/SQL running on latest version 23c (23.3.0.0). Getting started with the OneCompiler's Oracle PL/SQL editor is really simple and pretty fast. The editor shows sample boilerplate code when you choose language as 'PL/SQL' and start writing code to learn and test online without worrying about tedious process of installation.

About PL/SQL

PL/SQL is procedural extension for SQL created by Oracle. It is by default embedded into the Oracle Database. PL/SQL program units are compiled and stored inside the Oracle Database which results in optimal execution times as the PL/SQL and SQL run within the same server process.

Syntax help

Following is the syntax structure for the PL/SQL code blocks

DECLARE 
   <declarations section> 
BEGIN 
   <executable command(s)>
EXCEPTION 
   <exception handling> 
END;

Example

DECLARE 
   message  varchar2(100):= 'Hello, World!'; 
BEGIN 
   dbms_output.put_line(message); 
END; 
/

Named procedures

CREATE OR REPLACE FUNCTION 
hello_user
   (user_name IN VARCHAR2) 
    RETURN VARCHAR2
IS
BEGIN
   RETURN 'Hello ' || user_name;
END hello_user;
/

BEGIN
   dbms_output.put_line(hello_user('Peter'));
END;
/

Exception handling

BEGIN
  DBMS_OUTPUT.put_line (1/0);
EXCEPTION
  WHEN OTHERS
  THEN
    DBMS_OUTPUT.put_line ('error is: ' || SQLERRM);
END;