русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Написать код вызова процедуры с выводом OUT параметров в DBMS_OUTPUT.


Дата добавления: 2015-08-31; просмотров: 648; Нарушение авторских прав


 

Создадим функцию с параметрами: входной строкой и символом, количество вхождений которого в строке мы ищем.

CREATE OR REPLACE FUNCTION KK_F(IN_STR IN VARCHAR2, IN_CHAR IN CHAR)

RETURN INTEGER IS

RES INTEGER;

BEGIN

RES := 0;

FOR I IN 1 .. LENGTH(IN_STR) LOOP

IF SUBSTR(IN_STR, I, 1) = IN_CHAR THEN

RES := RES + 1;

END IF;

END LOOP;

RETURN RES;

END KK_F;

 

Создадим основную процедуру. Такой способ вызова процедуры, когда параметры перечислены в том порядке, в каком они указаны в коде процедуры, называется позиционной нотацией:

CREATE OR REPLACE PROCEDURE KK_P(IN_LASTNAME IN VARCHAR2,

IN_FIRSTNAME IN VARCHAR2,

OUT_NUM_A_IN_LASTNAME OUT INTEGER,

OUT_NUM_B_IN_FIRSTNAME OUT INTEGER) IS

BEGIN

OUT_NUM_A_IN_LASTNAME := KK_F(UPPER(IN_LASTNAME), 'А');

OUT_NUM_B_IN_FIRSTNAME := KK_F(UPPER(IN_FIRSTNAME), 'Б');

END KK_P;

 

Проверим работу процедуры. Такой способ вызова процедуры, когда параметры перечислены в том порядке, в каком они указаны в коде процедуры, называется позиционной нотацией:

declare

n1 integer := 0;

n2 integer := 0;

begin

DBMS_OUTPUT.enable;

kk_p('Анатольев', 'Борис', n1, n2);

DBMS_OUTPUT.put_line('Анатольев Борис ' || n1 || ' ' || n2);



kk_p('Робин', 'Барабек', n1, n2);

DBMS_OUTPUT.put_line('Робин Барабек ' || n1 || ' ' || n2);

kk_p('Атанбаев', 'Ибрагим', n1, n2);

DBMS_OUTPUT.put_line('Атанбаев Ибрагим ' || n1 || ' ' || n2);

end;

 

Другим способом передачи параметров вызываемой процедуре является именованная нотация:

declare

n1 integer := 0;

n2 integer := 0;

begin

DBMS_OUTPUT.enable;

kk_p(IN_LASTNAME => 'Анатольев',

IN_FIRSTNAME => 'Борис',

OUT_NUM_A_IN_LASTNAME => n1,

OUT_NUM_B_IN_FIRSTNAME => n2);

DBMS_OUTPUT.put_line('Анатольев Борис ' || n1 || ' ' || n2);



kk_p(IN_LASTNAME => 'Робин',

IN_FIRSTNAME => 'Барабек',

OUT_NUM_A_IN_LASTNAME => n1,

OUT_NUM_B_IN_FIRSTNAME => n2);

DBMS_OUTPUT.put_line('Робин Барабек ' || n1 || ' ' || n2);

kk_p(IN_LASTNAME => 'Атанбаев',

IN_FIRSTNAME => 'Ибрагим',

OUT_NUM_A_IN_LASTNAME => n1,

OUT_NUM_B_IN_FIRSTNAME => n2);

DBMS_OUTPUT.put_line('Атанбаев Ибрагим ' || n1 || ' ' || n2);

end;

 

Именованная нотация позволяет переставлять параметры местами и удобно пользоваться значениями параметров по умолчанию. Немного переделаем процедуру, добавив значения параметров по умолчанию:

CREATE OR REPLACE PROCEDURE KK_P(IN_LASTNAME IN VARCHAR2 default 'Растаманов',

IN_FIRSTNAME IN VARCHAR2 default 'Боромир',

OUT_NUM_A_IN_LASTNAME OUT INTEGER,

OUT_NUM_B_IN_FIRSTNAME OUT INTEGER) IS

BEGIN

OUT_NUM_A_IN_LASTNAME := KK_F(UPPER(IN_LASTNAME), 'А');

OUT_NUM_B_IN_FIRSTNAME := KK_F(UPPER(IN_FIRSTNAME), 'Б');

END KK_P;

 

Вызовем процедуру другим образом, IN_LASTNAME передастся по умолчанию:

declare

n1 integer := 0;

n2 integer := 0;

begin

kk_p(OUT_NUM_A_IN_LASTNAME => n1,

OUT_NUM_B_IN_FIRSTNAME => n2,

IN_FIRSTNAME => 'Добролюб');

DBMS_OUTPUT.put_line('Растаманов Добролюб ' || n1 || ' ' || n2);

end;



<== предыдущая лекция | следующая лекция ==>
Заполнить эту таблицу 100 строками: ID - значениями из сиквенса, VAL - случайными значениями от 0 до 999. | Задача. Простой пакет.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.005 сек.