Youtube Video Teil 1:
https://youtu.be/tYqQi18wopkEinführung
In diesem Blogbeitrag zeige ich Ihnen, wie man professionell Sequenzen erstellt, die dazugehörigen Tabellen mit eindeutigen Spaltennamen und Standardwerten definiert sowie Audit-Spalten festlegt. Anschließend demonstriere ich, wie man mit Oracle APEX's Low-Code-Funktionen einfach und schnell Berichte und Formulare erstellt.
Sequenzen und Tabellen erstellen
Sequenz und Tabelle für Mitarbeiter
Hier zeige ich, wie man eine Sequenz für Mitarbeiter erstellt:
SQL
create sequence dep_seq start with 1 increment by 1 nocache nocycle;
Anschließend erstellen wir die zugehörige Mitarbeitertabelle:
SQL
CREATE TABLE department(
dep_DEPTNO NUMBER DEFAULT dep_seq.NEXTVAL primary key
, dep_DNAME VARCHAR2(4000) not null
, dep_LOC VARCHAR2(4000) not null
-- audit
, dep_REMARK CLOB
, dep_CREATED TIMESTAMP DEFAULT sysdate NOT NULL
, dep_CREATED_BY VARCHAR2(4000) DEFAULT (coalesce(sys_context('apex$session', 'app_user'), sys_context('userenv', 'os_user'), sys_context('userenv', 'session_user')) ) NOT NULL
, dep_UPDATED TIMESTAMP DEFAULT sysdate NOT NULL
, dep_UPDATED_BY VARCHAR2(4000) DEFAULT (coalesce(sys_context('apex$session', 'app_user'), sys_context('userenv', 'os_user'), sys_context('userenv', 'session_user')) ) NOT NULL
, dep_VALID_FROM TIMESTAMP DEFAULT sysdate NOT NULL
, dep_VALID_TO TIMESTAMP DEFAULT to_date('31.12.2999', 'DD.MM.YYYY') NOT NULL
, dep_DELETED_YN VARCHAR2(4000) DEFAULT 'NO'
) ;
Sequenz und Tabelle für Abteilungen
Gleiches Verfahren für die Abteilungen:
SQL
create sequence emp_seq start with 1 increment by 1 nocache nocycle;
Und die Erstellung der Abteilungstabelle:
SQL
CREATE TABLE employee(
emp_EMPNO NUMBER default emp_seq.nextval primary key
, emp_ename VARCHAR2(4000) not null
, emp_jOB VARCHAR2(4000) not null
, emp_MGR NUMBER
, emp_HIREDATE DATE default sysdate
, emp_SAL NUMBER default 500
, emp_COMM NUMBER
, emp_DEPTNO NUMBER not null
-- audit
, emp_remark clob
, emp_created timestamp default sysdate not null
, emp_created_by varchar2(4000) default (coalesce(sys_context('apex$session', 'app_user'), sys_context('userenv', 'os_user'), sys_context('userenv', 'session_user')) ) not null
, emp_updated timestamp default sysdate not null
, emp_updated_by varchar2(4000) default (coalesce(sys_context('apex$session', 'app_user'), sys_context('userenv', 'os_user'), sys_context('userenv', 'session_user')) ) not null
, emp_valid_from timestamp default sysdate not null
, emp_valid_to timestamp default to_date('31.12.2999', 'DD.MM.YYYY') not null
, emp_deleted_yn varchar2(4) default 'NO'
) ;
Daten einfügen
Um unsere Berichte zu testen, fügen wir einige Daten in die Tabellen ein:
SQL
INSERT INTO DEPARTMENT (DEP_DEPTNO, DEP_DNAME, DEP_LOC) VALUES (1, 'Buchhaltung', 'Frankfurt');
INSERT INTO DEPARTMENT (DEP_DEPTNO, DEP_DNAME, DEP_LOC) VALUES (2, 'Forschung', 'München');
INSERT INTO DEPARTMENT (DEP_DEPTNO, DEP_DNAME, DEP_LOC) VALUES (3, 'Vertrieb', 'Hamburg');
INSERT INTO DEPARTMENT (DEP_DEPTNO, DEP_DNAME, DEP_LOC) VALUES (4, 'Betrieb', 'Berlin');
INSERT INTO DEPARTMENT (DEP_DEPTNO, DEP_DNAME, DEP_LOC) VALUES (5, 'Personal', 'Düsseldorf');
INSERT INTO DEPARTMENT (DEP_DEPTNO, DEP_DNAME, DEP_LOC) VALUES (6, 'IT', 'Stuttgart');
INSERT INTO DEPARTMENT (DEP_DEPTNO, DEP_DNAME, DEP_LOC) VALUES (7, 'Kundenservice', 'Leipzig');
INSERT INTO DEPARTMENT (DEP_DEPTNO, DEP_DNAME, DEP_LOC) VALUES (8, 'Produktion', 'Dresden');
INSERT INTO DEPARTMENT (DEP_DEPTNO, DEP_DNAME, DEP_LOC) VALUES (9, 'Rechtsabteilung', 'Hannover');
INSERT INTO DEPARTMENT (DEP_DEPTNO, DEP_DNAME, DEP_LOC) VALUES (10, 'Strategie und Entwicklung', 'Nürnberg');
INSERT INTO EMPLOYEE (EMP_EMPNO, EMP_ENAME, EMP_JOB, EMP_MGR, EMP_SAL, EMP_DEPTNO, EMP_REMARK) VALUES (1, 'Maximilian Weber', 'Senior Buchhalter', NULL, 60000, 1, 'Maximilian ist bekannt für seine präzise Arbeitsweise und seine Fähigkeit, komplexe finanzielle Vorgänge zu vereinfachen und zu optimieren. Er hat einen ausgezeichneten Track Record in der Implementierung von effizienten Buchhaltungsprozessen, die signifikant zur Kostensenkung beitragen.');
INSERT INTO EMPLOYEE (EMP_EMPNO, EMP_ENAME, EMP_JOB, EMP_MGR, EMP_SAL, EMP_DEPTNO, EMP_REMARK) VALUES (2, 'Julia Fischer', 'Marketing Managerin', NULL, 55000, 2, 'Julia bringt eine frische Perspektive in das Marketingteam und ist bekannt für ihre kreativen Ansätze, die bereits in früheren Positionen zu messbaren Erfolgen geführt haben.');
INSERT INTO EMPLOYEE (EMP_EMPNO, EMP_ENAME, EMP_JOB, EMP_MGR, EMP_SAL, EMP_DEPTNO, EMP_REMARK) VALUES (3, 'Thomas Schmidt', 'IT-Sicherheitsbeauftragter', NULL, 70000, 4, 'Thomas hat eine wichtige Rolle in der IT-Abteilung und ist für seine methodische und detailorientierte Arbeitsweise bekannt, die das Unternehmen vor Datenverlust und Sicherheitsverletzungen schützt.');
INSERT INTO EMPLOYEE (EMP_EMPNO, EMP_ENAME, EMP_JOB, EMP_MGR, EMP_SAL, EMP_DEPTNO, EMP_REMARK) VALUES (4, 'Niklas Bauer', 'Forschungsassistent', 2, 42000, 2, 'Niklas hat bereits in seiner kurzen Karriere beeindruckende Forschungsarbeiten geleistet und ist bekannt für seine schnelle Auffassungsgabe und sein Engagement für die Wissenschaft. Sein analytischer Ansatz und seine Fähigkeit, komplexe Daten zu interpretieren, machen ihn zu einem wertvollen Mitglied des Forschungsteams.');
INSERT INTO EMPLOYEE (EMP_EMPNO, EMP_ENAME, EMP_JOB, EMP_MGR, EMP_SAL, EMP_DEPTNO, EMP_REMARK) VALUES (5, 'Hannah Müller', 'Chief Financial Officer', NULL, 90000, 5, 'Hannah hat umfassende Erfahrungen in der Finanzbranche und führt unsere finanziellen Strategien mit einem innovativen Ansatz.');
INSERT INTO EMPLOYEE (EMP_EMPNO, EMP_ENAME, EMP_JOB, EMP_MGR, EMP_SAL, EMP_DEPTNO, EMP_REMARK) VALUES (6, 'Felix Richter', 'Chief Marketing Officer', NULL, 85000, 6, 'Felix ist ein visionärer Leader mit einem tiefen Verständnis für globale Märkte und hat das Unternehmen in neue Marketingdimensionen geführt.');
INSERT INTO EMPLOYEE (EMP_EMPNO, EMP_ENAME, EMP_JOB, EMP_MGR, EMP_SAL, EMP_DEPTNO, EMP_REMARK) VALUES (7, 'Andrea Meier', 'Personalmanagerin', NULL, 58000, 9, 'Andrea hat langjährige Erfahrung im Bereich HR und bringt innovative Ansätze zur Mitarbeiterentwicklung und -förderung mit.');
INSERT INTO EMPLOYEE (EMP_EMPNO, EMP_ENAME, EMP_JOB, EMP_MGR, EMP_SAL, EMP_DEPTNO, EMP_REMARK) VALUES (8, 'Lukas Klein', 'Produktionsleiter', NULL, 62000, 8, 'Lukas ist bekannt für seine effiziente Leitung der Produktionsprozesse und sein Engagement für Nachhaltigkeit und Qualität.');
INSERT INTO EMPLOYEE (EMP_EMPNO, EMP_ENAME, EMP_JOB, EMP_MGR, EMP_SAL, EMP_DEPTNO, EMP_REMARK) VALUES (9, 'Anna Schmidt', 'Software Entwicklerin', 1, 45000, 1, 'Anna arbeitet seit 5 Jahren in der Softwareentwicklung und ist spezialisiert auf Backend-Systeme.');
INSERT INTO EMPLOYEE (EMP_EMPNO, EMP_ENAME, EMP_JOB, EMP_MGR, EMP_SAL, EMP_DEPTNO, EMP_REMARK) VALUES (10, 'Markus Bauer', 'Projektmanager', 2, 50000, 2, 'Markus leitet mehrere Projekte im Bereich Digitalmarketing.');
INSERT INTO EMPLOYEE (EMP_EMPNO, EMP_ENAME, EMP_JOB, EMP_MGR, EMP_SAL, EMP_DEPTNO, EMP_REMARK) VALUES (12, 'Tobias Wolf', 'HR Manager', 5, 48000, 4, 'Tobias ist verantwortlich für die Personalentwicklung und Rekrutierung.');
INSERT INTO EMPLOYEE (EMP_EMPNO, EMP_ENAME, EMP_JOB, EMP_MGR, EMP_SAL, EMP_DEPTNO, EMP_REMARK) VALUES (13, 'Emily Sommer', 'IT Support Spezialist', 6, 42000, 5, 'Emily unterstützt das Unternehmen bei allen IT-bezogenen Anfragen.');
INSERT INTO EMPLOYEE (EMP_EMPNO, EMP_ENAME, EMP_JOB, EMP_MGR, EMP_SAL, EMP_DEPTNO, EMP_REMARK) VALUES (14, 'Julian Weber', 'Vertriebsleiter', 7, 60000, 6, 'Julian treibt die Umsätze durch strategische Vertriebsinitiativen.');
INSERT INTO EMPLOYEE (EMP_EMPNO, EMP_ENAME, EMP_JOB, EMP_MGR, EMP_SAL, EMP_DEPTNO, EMP_REMARK) VALUES (15, 'Sophie Koch', 'Produktmanagerin', 8, 62000, 7, 'Sophie arbeitet eng mit dem Entwicklerteam zusammen, um neue Produkte zu gestalten.');
INSERT INTO EMPLOYEE (EMP_EMPNO, EMP_ENAME, EMP_JOB, EMP_MGR, EMP_SAL, EMP_DEPTNO, EMP_REMARK) VALUES (16, 'Lukas Neumann', 'Netzwerkadministrator', 1, 53000, 8, 'Lukas ist spezialisiert auf die Sicherheit und Wartung der Netzwerkinfrastruktur.');
INSERT INTO EMPLOYEE (EMP_EMPNO, EMP_ENAME, EMP_JOB, EMP_MGR, EMP_SAL, EMP_DEPTNO, EMP_REMARK) VALUES (17, 'Sara Lang', 'Business Analyst', 2, 47000, 9, 'Sara bringt innovative Lösungen für komplexe Geschäftsprobleme.');
INSERT INTO EMPLOYEE (EMP_EMPNO, EMP_ENAME, EMP_JOB, EMP_MGR, EMP_SAL, EMP_DEPTNO, EMP_REMARK) VALUES (18, 'Christian Fischer', 'Marketing Spezialist', 3, 44000, 10, 'Christian ist verantwortlich für die Planung und Umsetzung von Online-Marketing-Kampagnen.');
INSERT INTO EMPLOYEE (EMP_EMPNO, EMP_ENAME, EMP_JOB, EMP_MGR, EMP_SAL, EMP_DEPTNO, EMP_REMARK) VALUES (19, 'Monika Schwarz', 'Datenanalystin', 4, 56000, 1, 'Monika unterstützt das Team mit tiefgreifenden Analysen von Markt- und Kundendaten, um datengetriebene Entscheidungen zu fördern.');
INSERT INTO EMPLOYEE (EMP_EMPNO, EMP_ENAME, EMP_JOB, EMP_MGR, EMP_SAL, EMP_DEPTNO, EMP_REMARK) VALUES (20, 'Friedrich Bauer', 'Compliance Officer', 5, 61000, 2, 'Friedrich gewährleistet, dass das Unternehmen stets alle rechtlichen und internen Richtlinien einhält.');
INSERT INTO EMPLOYEE (EMP_EMPNO, EMP_ENAME, EMP_JOB, EMP_MGR, EMP_SAL, EMP_DEPTNO, EMP_REMARK) VALUES (21, 'Lisa Meyer', 'Leiterin Kundenservice', 6, 54000, 3, 'Lisa leitet das Kundenserviceteam mit einem Fokus auf hervorragenden Kundensupport und die Verbesserung der Kundenzufriedenheit.');
Low-Code-Anwendungsentwicklung mit Oracle APEX
Nachdem die Tabellen erstellt wurden, zeige ich, wie man mit Oracle APEX basierend auf diesen Tabellen einfach einen Bericht und ein Formular erstellt:
SQL
SELECT
emp_empno AS node_id, -- Node ID
emp_ename || ' (' || dep_loc || ')' AS node_label, -- Node Label mit Standort
emp_mgr AS parent_id, -- Parent ID
emp_job AS job, -- Zusätzliche Information: Job
emp_sal AS salary, -- Zusätzliche Information: Gehalt
dep_loc AS location -- Zusätzliche Information: Standort
FROM
employee
JOIN
department
ON
emp_deptno = dep_deptno
Fazit
Dieser Blogbeitrag zeigt, wie man effizient Datenbankkomponenten erstellt und Oracle APEX für schnelle Anwendungsentwicklung nutzt. Indem Sie diesen Schritten folgen, können Sie schnell robuste Datenbankanwendungen einrichten und mit minimaler Codierung interaktive Anwendungen erstellen.
{fullWidth}
0 $type={blogger}:
Kommentar veröffentlichen