Skip to main content

Posts

PL/SQL Package

Recent posts

PL/SQL COLLECTION

In PL/SQL, you can create collections to store multiple values of the same datatype. There are three main types of collections in PL/SQL: associative arrays (also known as index-by tables), nested tables, and VARRAYs (variable-size arrays).   VARRAY These are one-dimensional arrays with a fixed upper bound, specified at declaration. They are useful when you know the maximum number of elements that will be stored in the array. DECLARE   TYPE num_array IS VARRAY(5) OF NUMBER;   numbers num_array := num_array(10, 20, 30, 40, 50);   total NUMBER := 0; BEGIN   -- Loop through the VARRAY   FOR i IN 1..numbers.COUNT LOOP     total := total + numbers(i);   END LOOP;   DBMS_OUTPUT.PUT_LINE('Total sum: ' || total); END;   NESTED TABLE These are one-dimensional arrays with no upper bounds. They are declared using the TYPE statement and instantiated with the CREATE TYPE statement. They behave similar to database tables and can be used in SQL oper

PL/SQL TRIGGER

In PL/SQL, a trigger is a named PL/SQL block associated with a table, view, schema, or database event that automatically fires (executes) when a specific event occurs. Triggers can be used to enforce business rules, enforce data integrity, log changes, or perform other actions in response to database events.   CREATE [OR REPLACE] TRIGGER trigger_name {BEFORE | AFTER | INSTEAD OF} {INSERT | UPDATE | DELETE | {ALL}} ON table_name [FOR EACH ROW] DECLARE    -- Declaration section (optional) BEGIN    -- Trigger body (implementation) END;   Example: CREATE OR REPLACE TRIGGER set_creation_timestamp BEFORE INSERT ON my_table FOR EACH ROW BEGIN    :NEW.created_at := SYSDATE; END; This trigger sets the created_at column of the my_table table to the current date and time (SYSDATE) before each new row is inserted.   DML TRIGGER     INSERT, UPDATE, DELETE DML triggers are fired in response to Data Manipulation Language (DML) statements, such as INSERT,

SQL Security

To enhance SQL security, focusing on user management, role management, and data encryption is essential. Below are detailed best practices and strategies for each area: User Management Strong Password Policies : Enforce strong, complex passwords that are regularly updated. Implement password expiration policies and account lockout mechanisms to prevent brute-force attacks. Individual User Accounts : Avoid shared user accounts. Assign unique accounts to each user. Track user activity to individual accounts for better auditing and accountability. Multi-Factor Authentication (MFA) : Require MFA for database access to add an extra layer of security. Account Management : Regularly review and remove inactive or unnecessary accounts. Immediately revoke access for users who leave the organization or change roles. Secure Access Controls : Limit administrative access to trusted personnel. Use secure, encrypted connections for remote database access. -- Creating a user with a strong password   CR

Performance Optimization

Performance optimization in SQL is crucial for ensuring that your database queries run efficiently, especially as the size and complexity of your data grow. Here are several strategies and techniques to optimize SQL performance: Indexing Create Indexes : Primary Key and Unique Indexes : These are automatically indexed. Ensure that your tables have primary keys and unique constraints where applicable. Foreign Keys : Index foreign key columns to speed up join operations. Composite Indexes : Use these when queries filter on multiple columns. The order of columns in the index should match the order in the query conditions. Avoid Over-Indexing:  Too many indexes can slow down write operations (INSERT, UPDATE, DELETE). Only index columns that are frequently used in WHERE clauses, JOIN conditions, and as sorting keys. Query Optimization Use SELECT Statements Efficiently : SELECT Only Necessary Columns : Avoid using SELECT * ; specify only the