Материал: 2110

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Окончание табл. 4.3

1

2

TO_CHAR

SET SERVEROUTPUT ON

TO_NCHAR

DECLARE

 

n integer:=1009;

 

ch char(5);

 

ch1 nchar(5);

 

BEGIN

 

ch:=TO_CHAR(n);

 

ch1:=TO_NCHAR(n);

 

DBMS_OUTPUT.PUT_LINE( ch );

 

DBMS_OUTPUT.PUT_LINE( ch1 );

 

DBMS_OUTPUT.PUT_LINE(TO_CHAR(SYSDATE,'SSSSS'));

 

END;

TO_DATE

SET SERVEROUTPUT ON

 

DECLARE

 

ch char(11):='21-дек-1980';

 

ch1 char(11):='05-30-1990';

 

BEGIN

 

DBMS_OUTPUT.PUT_LINE(TO_DATE(ch, 'dd-mon-yyyy'));

 

DBMS_OUTPUT.PUT_LINE(TO_DATE(ch1, 'mm-dd-

 

yyyy'));

 

END;

TO_NUMBER

SET SERVEROUTPUT ON

 

DECLARE

 

n int:=1029; num number(4,0); num1 number(4,-1);

 

BEGIN

 

num:=TO_NUMBER(n); num1:=TO_NUMBER(n);

 

DBMS_OUTPUT.PUT_LINE(num);

 

DBMS_OUTPUT.PUT_LINE(num1);

 

END;

Операторские скобки

BEGIN

/* Операторские скобки должны содержать хотя бы один оператор. Требуются для конструкций поливариантных ветвлений, условных и цик- лических конструкций.

*/

END;

Оператор ветвления IF

Синтаксис:

IF условие_1 THEN

Операторы;

ELSIF условие_2 THEN

Операторы;

40

ELSIF условие_3 THEN

ELSE

Операторы; END IF

Пример ветвления:

SET SERVEROUTPUT ON DECLARE

nNUMBER; BEGIN

n:= DBMS_RANDOM.RANDOM; IF n<10 THEN

DBMS_OUTPUT.PUT_LINE('n=' || n || '; N<10'); ELSIF n=10 THEN

DBMS_OUTPUT.PUT_LINE('n=' || n || '; N=10'); ELSE

DBMS_OUTPUT.PUT_LINE('n=' || n || '; N>10'); END IF;

END;

Ветвление CASE

Синтаксис:

имя_переменной_метки:=

CASE

WHEN условие1 THEN

значение1

WHEN условие2 THEN

значение2

WHEN условие3 THEN

значение3

ELSE

значениеN END;

или

CASE

WHEN условие1 THEN

операторы; WHEN условие2 THEN

операторы; WHEN условие3 THEN

41

операторы;

ELSE

операторы; END CASE;

Пример ветвления:

SET SERVEROUTPUT ON DECLARE

nNUMBER; BEGIN

n:= DBMS_RANDOM.RANDOM; CASE

WHEN n<10 THEN DBMS_OUTPUT.PUT_LINE('n=' || n || '; N<10');

WHEN n=10 THEN DBMS_OUTPUT.PUT_LINE('n=' || n || '; N=10');

ELSE

DBMS_OUTPUT.PUT_LINE('n=' || n || '; N>10'); END CASE;

END;

Пример ветвления:

 

SET SERVEROUTPUT ON

 

DECLARE

 

n NUMBER;

 

ch char(15);

 

BEGIN

 

ch :=

 

CASE

 

WHEN n<10 THEN

'n=' || n || '; N<10'

WHEN n=10 THEN

'n=' || n || '; N=10'

ELSE

'n=' || n || '; N>10'

END; DBMS_OUTPUT.PUT_LINE(ch); END;

Цикл WHILE

Синтаксис:

WHILE Условие LOOP

Операторы; END LOOP;

42

Цикл выполняется до тех пор, пока условие будет истинно. Для выхода из цикла по дополнительному условию можно использовать EXIT.

Пример цикла WHILE:

SET SERVEROUTPUT ON DECLARE a INT;

begin a := 1;

WHILE a <100 loop

IF (a>40) AND (a<50) THEN

exit; --выход и выполнение 1-й команды за циклом

ELSE

a := a+10;

DBMS_OUTPUT.PUT_LINE('в цикле а=' || a); END IF;

END LOOP;

DBMS_OUTPUT.PUT_LINE('после цикла а=' || a); end;

Цикл LOOP

Синтаксис:

LOOP

EXIT WHEN условие_станет_истинно; Операторы;

END LOOP;

Цикл выполняется до тех пор, пока условие не приняло истинного зна- чения. Для выхода из цикла по дополнительному условию можно исполь- зовать EXIT.

Пример цикла LOOP:

SET SERVEROUTPUT ON DECLARE a INT;

begin a := 1; LOOP

EXIT WHEN a >100;

IF (a>40) AND (a<50) THEN

exit; --выход и выполнение 1-й команды за циклом

ELSE

a := a+10;

DBMS_OUTPUT.PUT_LINE('в цикле а=' || a); END IF;

43

END LOOP;

DBMS_OUTPUT.PUT_LINE('после цикла а=' || a); end;

Цикл FOR

Цикл, управляемым оператором FOR, используется в том случае, когда точно известно, сколько раз нужно выполнять итерацию цикла.

Синтаксис:

FOR переменная_счетчик IN старт_значение .. конеч_значение LOOP Операторы;

END LOOP;

Цикл выполняется до тех пор, пока переменная не приняла поочередно с шагом по умолчанию 1 от стартового значения до конечного значения. Для выхода из цикла по дополнительному условию можно использовать

EXIT.

Пример цикла FOR:

SET SERVEROUTPUT ON DECLARE

end_ INT:=20; begin_ INT:=1;

Factorial NUMBER:=1; begin

FOR I IN begin_ .. end_ LOOP Factorial:= Factorial*I;

END LOOP; DBMS_OUTPUT.PUT_LINE(factorial); end;

Передача данных из запроса в переменную

Для этого необходимо предварительно объявить переменную, в кото- рую поместим результат запроса, далее в операторе SELECT используем конструкцию INTO с указанием имени объявленной переменной:

SET SERVEROUTPUT ON DECLARE

Itogo INT; begin

SELECT COUNT(Code_author) INTO Itogo FROM ADMIN_BOOKS.Authors; DBMS_OUTPUT.PUT_LINE(Itogo);

end;

44