PL SQL 2




GREATEST() - наибольшее значение из списка
LEAST() - наименьшее
LENGTH - длина строки
LOWER -  в нижний регистр
TO_CHAR, TO_DATE, TO_NUMBER, TO_TIMESTAMP

вложенные блоки:
<<my_block_1>>
DECLARE
    value NUMBER := 10;
BEGIN
    DECLARE
        value NUMBER :=20;
    BEGIN
        dbms_output.put_line(my_block_1.value);
    END;
END;

** - возведение в степень




4.
--------------------------------------------------------------
set serveroutput on
DECLARE
    val_first_name EMPLOYEES.FIRST_NAME%TYPE;
    val_last_name  EMPLOYEES.LAST_NAME%TYPE;
BEGIN
    SELECT first_name, last_name
        INTO val_first_name, val_last_name
        FROM employees
        WHERE email = 'BERNST';
    dbms_output.put_line('val_first_name, val_last_name is '
        ||val_first_name||' '||val_last_name );
END;
/
--------------------------------------------------------------
set serveroutput on
DECLARE
    fond_salary EMPLOYEES.SALARY%TYPE;
    dept_id  EMPLOYEES.DEPARTMENT_ID%TYPE NOT NULL :=50;
BEGIN
    SELECT SUM(salary) 
        INTO fond_salary
        FROM employees
        WHERE DEPARTMENT_ID = dept_id;
    dbms_output.put_line('fond_salary is  '
        ||fond_salary);
END;
/     
---------------------------------------------------------------
set serveroutput on
DECLARE
    reg_id REGIONS.REGION_ID%type := 5;
    reg_name REGIONS.REGION_NAME%type := 'Arctica';
BEGIN
    INSERT INTO REGIONS 
        (REGION_ID, region_name)
        VALUES(reg_id, reg_name);
END;

---------------------------------------------------------------
set serveroutput on
DECLARE
    sal EMPLOYEES.salary%type := 10000;
BEGIN
    UPDATE EMPLOYEES
    SET EMPLOYEES.SALARY = EMPLOYEES.SALARY * 2
    WHERE EMPLOYEES.SALARY < sal;
END;
/
----------------------------------------------------------------
set serveroutput on
DECLARE
    name EMPLOYEES.FIRST_NAME%type := 'Ki';
BEGIN
    DELETE FROM  EMPLOYEES
    WHERE FIRST_NAME = name;
END;

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

Курсоры
----------------------------------------------------------------
set serveroutput on
DECLARE
    sal EMPLOYEES.salary%type := 10000;
BEGIN
    UPDATE EMPLOYEES
    SET EMPLOYEES.SALARY = EMPLOYEES.SALARY * 2
    WHERE EMPLOYEES.SALARY < sal;
     dbms_output.put_line(sql%rowcount ||' rows updated ');
END;
/

output: 94 rows updated
----------------------------------------------------------------
sql%found - истина, если обработано более одной строки
sql%notfound - истина, если ни одной строки не обработано
----------------------------------------------------------------

операторы
---------------------------------------------------------------------
set serveroutput on
DECLARE
    sal employees.salary%type;
    id_ employees.employee_id%type := 117;
BEGIN
    SELECT salary INTO sal FROM EMPLOYEES WHERE employee_id = id_;
    IF sal >18000 THEN
        dbms_output.put_line(sal ||' is very good salary ');
    ELSIF sal >15000 THEN
        dbms_output.put_line(sal ||' is good salary ');
    ELSE
        dbms_output.put_line(sal ||' is not good salary ');
    END IF;
END;
/
----------------------------------------------------------------------
set serveroutput on
DECLARE
    sal employees.salary%type;
    id_ employees.employee_id%type := 127;
    out_ varchar2(25);
BEGIN
    SELECT salary INTO sal FROM EMPLOYEES WHERE employee_id = id_;
    out_ := CASE WHEN sal > 18000 THEN  ' is very good salary '
                 WHEN sal > 15000 THEN  ' is good salary '
                 ELSE                   ' is not good salary ' 
            END;
            dbms_output.put_line(sal || out_);
END;
/
--------------------------------------------------------------------------------
set serveroutput on
DECLARE 
    sal employees.salary%type;
    id_ employees.employee_id%type := 121;
BEGIN
    SELECT salary INTO sal FROM EMPLOYEES WHERE employee_id = id_;
    CASE sal
        WHEN  19200 THEN 
                          dbms_output.put_line(sal || ' is very good salary ');
        WHEN  16400 THEN 
                          dbms_output.put_line(sal || ' is good salary ');
        ELSE              dbms_output.put_line(sal || ' is not good salary ');     
    END CASE;
END;

---------------------------------------------------------------------------------
set serveroutput on
DECLARE 
    sal employees.salary%type;
    id_ employees.employee_id%type := 121;
BEGIN
    SELECT salary INTO sal FROM EMPLOYEES WHERE employee_id = id_;
    CASE
        WHEN  sal >= 19200 THEN 
                          dbms_output.put_line(sal || ' is very good salary ');
        WHEN  sal >= 16400 THEN 
                          dbms_output.put_line(sal || ' is good salary ');
        ELSE              dbms_output.put_line(sal || ' is not good salary ');     
    END CASE;
END;

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























Комментарии

Популярные сообщения из этого блога

Репликация MongoDB

Руководство по MongoDB

Запросы в MongoDB