Skip to main content Svelte Highlight v7.21.1

PL/SQL language preview

1. A stored procedure

%TYPE, exception handling, and the standalone slash
horizon-dark
CREATE OR REPLACE PROCEDURE raise_salary(p_id NUMBER) IS
  v_salary employees.salary%TYPE;
BEGIN
  SELECT salary INTO v_salary FROM employees WHERE id = p_id;
  v_salary := v_salary * 1.1;
  UPDATE employees SET salary = v_salary WHERE id = p_id;
EXCEPTION
  WHEN NO_DATA_FOUND THEN
    RAISE_APPLICATION_ERROR(-20001, 'Employee not found');
END;
/
atom-one-dark
CREATE OR REPLACE PROCEDURE raise_salary(p_id NUMBER) IS
  v_salary employees.salary%TYPE;
BEGIN
  SELECT salary INTO v_salary FROM employees WHERE id = p_id;
  v_salary := v_salary * 1.1;
  UPDATE employees SET salary = v_salary WHERE id = p_id;
EXCEPTION
  WHEN NO_DATA_FOUND THEN
    RAISE_APPLICATION_ERROR(-20001, 'Employee not found');
END;
/
github-dark
CREATE OR REPLACE PROCEDURE raise_salary(p_id NUMBER) IS
  v_salary employees.salary%TYPE;
BEGIN
  SELECT salary INTO v_salary FROM employees WHERE id = p_id;
  v_salary := v_salary * 1.1;
  UPDATE employees SET salary = v_salary WHERE id = p_id;
EXCEPTION
  WHEN NO_DATA_FOUND THEN
    RAISE_APPLICATION_ERROR(-20001, 'Employee not found');
END;
/
dracula
CREATE OR REPLACE PROCEDURE raise_salary(p_id NUMBER) IS
  v_salary employees.salary%TYPE;
BEGIN
  SELECT salary INTO v_salary FROM employees WHERE id = p_id;
  v_salary := v_salary * 1.1;
  UPDATE employees SET salary = v_salary WHERE id = p_id;
EXCEPTION
  WHEN NO_DATA_FOUND THEN
    RAISE_APPLICATION_ERROR(-20001, 'Employee not found');
END;
/
nord
CREATE OR REPLACE PROCEDURE raise_salary(p_id NUMBER) IS
  v_salary employees.salary%TYPE;
BEGIN
  SELECT salary INTO v_salary FROM employees WHERE id = p_id;
  v_salary := v_salary * 1.1;
  UPDATE employees SET salary = v_salary WHERE id = p_id;
EXCEPTION
  WHEN NO_DATA_FOUND THEN
    RAISE_APPLICATION_ERROR(-20001, 'Employee not found');
END;
/
github
CREATE OR REPLACE PROCEDURE raise_salary(p_id NUMBER) IS
  v_salary employees.salary%TYPE;
BEGIN
  SELECT salary INTO v_salary FROM employees WHERE id = p_id;
  v_salary := v_salary * 1.1;
  UPDATE employees SET salary = v_salary WHERE id = p_id;
EXCEPTION
  WHEN NO_DATA_FOUND THEN
    RAISE_APPLICATION_ERROR(-20001, 'Employee not found');
END;
/

2. Cursors and loops

CURSOR, %FOUND, and a labeled loop
horizon-dark
DECLARE
  CURSOR emp_cur IS SELECT id, name FROM employees;
  v_id employees.id%TYPE;
  v_name employees.name%TYPE;
BEGIN
  OPEN emp_cur;
  <<fetch_loop>>
  LOOP
    FETCH emp_cur INTO v_id, v_name;
    EXIT WHEN emp_cur%NOTFOUND;
    DBMS_OUTPUT.PUT_LINE(v_name);
  END LOOP fetch_loop;
  CLOSE emp_cur;
END;
/
atom-one-dark
DECLARE
  CURSOR emp_cur IS SELECT id, name FROM employees;
  v_id employees.id%TYPE;
  v_name employees.name%TYPE;
BEGIN
  OPEN emp_cur;
  <<fetch_loop>>
  LOOP
    FETCH emp_cur INTO v_id, v_name;
    EXIT WHEN emp_cur%NOTFOUND;
    DBMS_OUTPUT.PUT_LINE(v_name);
  END LOOP fetch_loop;
  CLOSE emp_cur;
END;
/
github-dark
DECLARE
  CURSOR emp_cur IS SELECT id, name FROM employees;
  v_id employees.id%TYPE;
  v_name employees.name%TYPE;
BEGIN
  OPEN emp_cur;
  <<fetch_loop>>
  LOOP
    FETCH emp_cur INTO v_id, v_name;
    EXIT WHEN emp_cur%NOTFOUND;
    DBMS_OUTPUT.PUT_LINE(v_name);
  END LOOP fetch_loop;
  CLOSE emp_cur;
END;
/
dracula
DECLARE
  CURSOR emp_cur IS SELECT id, name FROM employees;
  v_id employees.id%TYPE;
  v_name employees.name%TYPE;
BEGIN
  OPEN emp_cur;
  <<fetch_loop>>
  LOOP
    FETCH emp_cur INTO v_id, v_name;
    EXIT WHEN emp_cur%NOTFOUND;
    DBMS_OUTPUT.PUT_LINE(v_name);
  END LOOP fetch_loop;
  CLOSE emp_cur;
END;
/
nord
DECLARE
  CURSOR emp_cur IS SELECT id, name FROM employees;
  v_id employees.id%TYPE;
  v_name employees.name%TYPE;
BEGIN
  OPEN emp_cur;
  <<fetch_loop>>
  LOOP
    FETCH emp_cur INTO v_id, v_name;
    EXIT WHEN emp_cur%NOTFOUND;
    DBMS_OUTPUT.PUT_LINE(v_name);
  END LOOP fetch_loop;
  CLOSE emp_cur;
END;
/
github
DECLARE
  CURSOR emp_cur IS SELECT id, name FROM employees;
  v_id employees.id%TYPE;
  v_name employees.name%TYPE;
BEGIN
  OPEN emp_cur;
  <<fetch_loop>>
  LOOP
    FETCH emp_cur INTO v_id, v_name;
    EXIT WHEN emp_cur%NOTFOUND;
    DBMS_OUTPUT.PUT_LINE(v_name);
  END LOOP fetch_loop;
  CLOSE emp_cur;
END;
/

3. Bind variables and quoted strings

:bind variables and q'[...]' quoting
horizon-dark
SELECT NVL(:employee_name, 'Unknown') AS name
FROM dual
WHERE description = q'[O'Brien's report]';
atom-one-dark
SELECT NVL(:employee_name, 'Unknown') AS name
FROM dual
WHERE description = q'[O'Brien's report]';
github-dark
SELECT NVL(:employee_name, 'Unknown') AS name
FROM dual
WHERE description = q'[O'Brien's report]';
dracula
SELECT NVL(:employee_name, 'Unknown') AS name
FROM dual
WHERE description = q'[O'Brien's report]';
nord
SELECT NVL(:employee_name, 'Unknown') AS name
FROM dual
WHERE description = q'[O'Brien's report]';
github
SELECT NVL(:employee_name, 'Unknown') AS name
FROM dual
WHERE description = q'[O'Brien's report]';