У вас вопросы?
У нас ответы:) SamZan.net

ОТЧЕТ ПО УЧЕБНОЙ ПРАКТИКЕ По направлению 230400.

Работа добавлена на сайт samzan.net:

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 29.12.2024

Частное образовательное учреждение

высшего профессионального образования

«Южно-Уральский институт управления и экономики»

Кафедра информационных технологий и систем

ОТЧЕТ ПО УЧЕБНОЙ ПРАКТИКЕ

По направлению 230400.62 «Информационные системы и технологии»

Выполнил: студент группы ИЗс-301

Пулин А.Н.

Проверил: Удовиченко Д.А.

Челябинск

2012

Оглавление

Введение 3

Краткая характеристика предприятия 5

Теоритическая часть 7

Краткое описание Oracle. 7

Основные команды в Oracle на PL\SQL 8

Практическая часть 27

Описание работы. 27

Техническое задание 28

Заключение 44

Список литературы: 45

Введение

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

Задачами практики являются:

1. Закрепление, расширение, углубление и систематизация знаний, полученных при изучении дисциплин «Информатика», «Технология программирования», «Управление данными», «Архитектура ЭВМ и систем».

2. Изучение особенностей деятельности конкретного предприятия (организации, учреждения, фирмы), его структуры, состава, информационного взаимодействия  подразделений, характера взаимодействия со службой администрирования информационных ресурсов и систем, со службой разработки программного обеспечения, знакомство с применяемыми информационными технологиями и программным обеспечением.

Студент должен знать:

  1.  Структуру информационной службы предприятия.
  2.  Правовые аспекты в области регулирования  деятельности предприятия, на которых строится работа организации.
  3.  Основные средства и способы распространения и передачи информации, используемые организацией.
  4.  Особенности выбора средств и видов программного обеспечения.
  5.  Координацию деятельности информационно-технологической службы с другими подразделениями предприятия и внешними организациями.
  6.  Перечень применяемых на предприятии информационных технологий и программных продуктов.
  7.  Систему сбора и хранения информации.
  8.  Основные документы, определяющие развитие информационных систем на предприятии.
  9.  Распределение должностных обязанностей и ответственности в сфере развития информационных систем предприятия.

Краткая характеристика предприятия

В 1934 году в качестве отдельной территориальной единицы РСФСР была образована Челябинская область. Одновременно с образованием области была создана Челябинская областная контора Госбанка СССР. Ее основной задачей стало финансово-кредитное, расчетное и кассовое обслуживание предприятий и организаций Челябинской области.

Процессы преобразования экономической структуры, новые методы ведения хозяйства привели в 1988 году к созданию государственных специализированных банков на базе учреждений Госбанка и Стройбанка СССР. В результате реорганизации было создано Челябинской областное управление Промышленно-строительного банка СССР, которое приняло на обслуживание практически все предприятия промышленности, строительства, транспорта и связи, торговли, материально технического снабжения и других отраслей. Областное управление имело широкую сеть филиалов на территории области и по объему операций занимало одно из первых мест в системе Промстройбанка СССР.

Переход к рыночным отношениям привел к необходимости создания двухуровневой банковской системы. 10 сентября было принято решение о создании Индустриального коммерческого банка Челябинской области (Челиндбанка), учредителями которого выступили крупнейшие предприятия области, сформировавшие уставный капитал банка в размере 150 миллионов рублей. Новое финансовое учреждение приняло на обслуживание всех клиентов бывшего Челябинского областного управления Промстройбанка СССР. На момент создания банк имел 297 пайщиков. Объемы кредитных вложений составляли около 2 млрд. рублей. «Челиндбанк» был зарегистрирован в Государственном банке Российской Федерации 16 октября 1990 года. На момент создания банк имел около 7 тысяч клиентов, 30 филиалов, свыше 1500 сотрудников.

Экономические реформы, начало процессов приватизации потребовало изменения организационно-правовой формы банка. Банк смог привлечь широкий круг индивидуальных инвесторов и предприятий негосударственных форм собственности. В 1992 году банк был преобразован в открытое акционерное общество и выпустил акции на сумму 200 млн. рублей, которые распространил между юридическими и физическими лицами. В течение 1992 года банк провел открытую подписку на акции второго выпуска, что позволило увеличить уставный капитал до 700 млн. руб. и изменить структуру акционеров. По состоянию на 1 января 1993 года уже 80% акций принадлежало физическим лицам.

В 1996 году банком принят новый устав, а в 2002 году изменения к нему, в которых изменено название банка. Сегодня банк называется: АКЦИОНЕРНЫЙ КОММЕРЧЕСКИЙ БАНК "ЧЕЛИНДБАНК" (открытое акционерное общество), сокращенно - ОАО "ЧЕЛИНДБАНК".

Теоритическая часть

Краткое описание Oracle.

 Oracle (Oracle Corporation) — американская корпорация, крупнейший в мире разработчик программного обеспечения для организаций, крупный поставщик серверного оборудования.

Компания специализируется на выпуске систем управления базами данныхсвязующего программного обеспечения и бизнес-приложений (ERP- и CRM-систем, специализированных отраслевых приложений). Наиболее известный продукт компании — Oracle Database, который компания выпускает с момента своего основания. С 2008 года корпорация освоила выпуск интегрированных аппаратно-программных комплексов, а с 2009 года в результате поглощения Sun Microsystems стала производителем серверного оборудования, до этого компания выпускала исключительно программное обеспечение.

Компания основана в 1977 году. Имеет подразделения более чем в 145 странах. По состоянию на 2012 год насчитывает 115 тыс. сотрудников. Штаб-квартира корпорации расположена в США, в штате Калифорния, рядом с Сан-Франциско.

Компания является вторым по объёмам продаж разработчиком программного обеспечения после Microsoft. Согласно IDC, по состоянию на 2007 год, на рынке систем управления базами данных, общим объёмом без малого 21 млрд долл., Oracle является лидером, владея долей 44,3 % и опережая IBM и Microsoft более, чем в 2 раза. На рынке инфраструктурного и связующего программного обеспечения по данным анализа Gartnerот 2009 года, Oracle является вторым по объёмам сбыта поставщиком с долей в 16 %, отставая почти в два раза от IBM (при суммарном объёме рынка 16 млрд долл.). На рынке ERP-систем компания по данным на 2010 год занимает второе место с долей 18 %, уступая SAP (24 %) и опережая Microsoft (11 %). На рынке CRM-систем, согласно оценке Gartner от 2009 года, компания также вторая, с долей 16 %, также уступая SAP первое место (у которой 22 % CRM-рынка, общий объём рынка оценён в 9 млрд долл.). IDC оценивает на начало 2011 года долю на рынке серверного аппаратного обеспечения в 6,8 % от общего объёма в 48 млрд долл. — четвёртую, после IBMHewlett-Packard и Dell.

Основные команды в Oracle на PL\SQL

Изучив некоторый список литературы по Oracle приходим к выводу что всю эту информацию нужно документировать и конспектировать, т.к. объем полученный информации слишком велик, изучив некоторые книги по Oracle можно законспектировать пожалуй основные команды для дальнейшей нашей работы с базой, как разработчикам, именно как разработчиком, ведь структура Oracle на столько велика что что СУБД в больших организациях обслуживает большое количество персонала, такие как администраторы Oracle, разработчики, аналитики т.д. и так выпишем основные команды, которые нам могут понадобиться для практического задания с возможными по необходимостью примерами и описаниями команды:

  1.  CHAR(n), VARCHAR2(n) - Строки переменной длины.
  2.  INTEGER - Масштабируемое целое.
  3.  NUMBER(n) - Масштабируемое целое с плавающей точкой.
  4.  DATE - Дата/Время
  5.  ROWID, ROW - Идентификаторы записей в БД.
  6.  BLOB - Большие двоичные обьекты.
  7.  CLOB - Большие строковые объекты.
  8.  BFILE - Указатели на большие внешние объекты.
  9.  SELECT включает в себя список столбцов возвращаемых запросом.
  10.  FROM включает в себя список таблиц для выполнения запроса.
  11.  WHERE устанавливает условие поиска, если необходимо вернуть не все строки, а только ту часть, которая описана условием, поиска.
  12.  GROUP BY позволяет создать итоговой запрос, разбитый на группы.

SQL> SELECT REP, AVG(AMOUNT)

 2  FROM ORDERS

 3  GROUP BY REP

***************************

SQL> SELECT REP_OFFICE, MIN(QUOTA), MAX(QUOTA)

 2  FROM SALESREPS

 3  GROUP BY REP_OFFICE

*******************************

SQL> SELECT REP, CUST, SUM(AMOUNT)

 2  FROM ORDERS

 3  GROUP BY REP, CUST

*******************************

SELECT EMPL_NUM, NAME, SUM(AMOUNT)

FROM ORDERS, SALESREPS

WHERE REP = EMPL_NUM

GROUP BY EMPL_NUM, NAME

  1.  HAVING определяет условие возврата групп и используется только совместно с GROUP BY.

SQL> SELECT REP, AVG(AMOUNT)

 2  FROM ORDERS

 3  GROUP BY REP

 4  HAVING SUM(AMOUNT) > 300

*******************************

SQL> SELECT CITY, SUM(QUOTA), SUM(SALESREPS.SALES)

 2  FROM OFFICES, SALESREPS

 3  WHERE OFFICE = REP_OFFICE

 4  GROUP BY CITY

 5  HAVING COUNT(*) >= 2

  1.  ORDER BY определяет порядок сортировки результирующего набора данных. DESC предикат  сортировки по убыванию. ASC предикат по убыванию. Если столбец сортировки вычисляемый и не имеет имени, в выражении ORDER BY можно просто указать его порядковый номер(номер столбца)

SQL> SELECT CITY, REGION, (SALES - TARGET)

 2  FROM OFFICES

 3  ORDER BY REGION ASC, 3 DESC

  1.  SUM() - Вычисляет сумму всех значений находящихся в столбце.

SQL> SELECT SUM(QUOTA), SUM(SALES)

  1.  FROM SALESREPS

**************

 SQL> SELECT SUM(AMOUNT)

 2   FROM ORDERS, SALESREPS

 3   WHERE NAME = 'Дима Маликов'

 4   AND REP = EMPL_NUM

  1.  AVG() - Вычисляет среднее всех значений содержащихся в столбце.

SQL> SELECT AVG(100 * (SALES/QUOTA)) PROCENT

  1.  FROM SALESREPS

************

 SQL> SELECT AVG(PRICE)

 2   FROM PRODUCTS

 3   WHERE MFR_ID = 'ACI'

  1.  MIN() - Находит наименьшее среди всех значений содержащихся в столбце.

SQL> SELECT MIN(ORDER_DATE)

 2   FROM ORDERS

  1.  MAX() - Находит наибольшее среди всех значений содержащихся в столбце.

SQL> SELECT MAX(100 * (SALES/QUOTA))

 2   FROM SALESREPS

  1.  COUNT() - Подсчитывает количество значений, содержащихся в столбце.

SQL> SELECT COUNT(CUST_NUM)

  1.  FROM CUSTOMERS

**************************

 SQL> SELECT COUNT(NAME)

 2   FROM SALESREPS

 3   WHERE SALES > QUOTA

  1.  COUNT(*) - Подсчитывает количество строк в таблице результатов запроса.
  2.  DISTINCT убирает одинаковые значения в столбце

SQL> SELECT COUNT(DISTINCT TITLE)

  1.  FROM SALESREPS

**************************

     SQL> SELECT COUNT(DISTINCT REP_OFFICE)

 2  FROM SALESREPS

 3  WHERE SALES > QUOTA

  1.  TO_DATE('01.06.1988','DD/MM/YYYY') - встроенная функция PL/SQL Oracle для работы с датами.
  2.  BETWEEN, по своей сути это выражение проверки на принадлежность к диапазону значений

SQL> SELECT ORDER_NUM, ORDER_DATE, MFR, PRODUCT, AMOUNT

 2  FROM ORDERS

 3 WHERE ORDER_DATE BETWEEN TO_DATE('01.11.1989','DD/MM/YYYY') AND TO_DATE('31.12.1989','DD/MM/YYYY')

  1.  NOT обуславливает обратное инвертирование условия, то есть "не принадлежит"

SQL> SELECT NAME, SALES, QUOTA

 2  FROM SALESREPS

 3  WHERE SALES NOT BETWEEN (0.8 * QUOTA)  AND (1.2 * QUOTA)

  1.  IN это проверка на принадлежность множеству значений или, иначе говоря, членство в множестве

Найти все заказы, сделанные в разные дни июня месяца 1990 года.

SQL> SELECT ORDER_NUM, ORDER_DATE, AMOUNT

 2  FROM ORDERS

 3  WHERE ORDER_DATE IN (TO_DATE('14.06.1990','DD/MM/YYYY'), TO_DATE('08.06.1990','DD/MM/YYYY'),

 4  TO_DATE('29.06.1990','DD/MM/YYYY'), TO_DATE('04.06.1990','DD/MM/YYYY'))

 5  /

  1.  LIKE оператор поиска

SQL> SELECT COMPANY, CREDIT_LIMIT

 2  FROM CUSTOMERS

 3  WHERE COMPANY LIKE '%бесы'

  1.  '_' - это означает, что вы не уверены, например в правильности ввода какого либо слова
  2.  OR  или
  3.  Алгебра выражения AND.

  Значения     Результат

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

TRUE AND TRUE   -> TRUE

FALSE AND TRUE  -> FALSE

TRUE AND FALSE  -> FALSE

FALSE AND FALSE -> FALSE

NULL AND TRUE   -> NULL

TRUE AND NULL   -> NULL

FALSE AND NULL  -> FALSE

NULL AND FALSE  -> FALSE

NULL AND NULL   -> NULL

  1.  Алгебра выражения OR.

  Значения     Результат

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

TRUE OR TRUE    -> TRUE

FALSE OR TRUE   -> TRUE

TRUE OR FALSE   -> TRUE

FALSE OR FALSE  -> FALSE

NULL OR TRUE    -> TRUE

TRUE OR NULL    -> TRUE

FALSE OR NULL   -> NULL

NULL OR FALSE   -> NULL

NULL OR NULL    -> NULL

  1.  Алгебра выражения NOT.

NOT TRUE        -> FALSE

NOT FALSE       -> TRUE

NOT NULL        -> NULL

  1.  UNION, он позволяет объединить результаты двух запросов

SQL> SELECT MFR_ID, PRODUCT_ID

 2     FROM PRODUCTS

 3  WHERE PRICE > 500.00

 4  UNION

 5  SELECT DISTINCT MFR, PRODUCT

 6     FROM ORDERS

 7  WHERE AMOUNT > 4.00

  1.  CREATE создание таблицы

SQL> CREATE TABLE PEOPLE 

 2  (  ID NUMBER,       

 3     NM VARCHAR2(50),

 4  FAMIL VARCHAR2(50),

 5   OTCH VARCHAR2(50),

 6   DROG DATE          

 7  )

  1.  INSERT добавление строки в таблицу

INSERT INTO PEOPLE(ID, NM, FAMIL, OTCH, DROG)

  VALUES(1, 'John', 'Godwin', 'Petrovich', TO_DATE('03-12-1967','DD-MM-YYYY'))

  1.  CREATE INDEX создать индекс
  2.  ROLLBACK Если нужно все вернуть на круги своя, оборвав действия текущей транзакции, введите оператор 
  3.  Избавляемся от лишней «писанины»

SELECT S.NAME, S.QUOTA, B.BIRTHDAYS.BIRTH_DAY

 FROM SALESREPS S, SAM.BIRTHDAYS B

 WHERE S.NAME = B.NAME

 *****************

SELECT EMPS.NAME, MGRS.NAME

 FROM SALESREPS EMPS, SALESREPS MGRS

 WHERE EMPS.MANAGER = MGRS.EMPL_NUM

Само объединение таблицы 

SQL> SELECT EMPS.NAME, EMP_OFFICE.CITY, MGRS.NAME, MGR_OFFICE.CITY

 2   FROM SALESREPS EMPS, SALESREPS MGRS, OFFICES EMP_OFFICE,

 3   OFFICES MGR_OFFICE

 4   WHERE EMPS.REP_OFFICE = EMP_OFFICE.OFFICE

 5   AND MGRS.REP_OFFICE = MGR_OFFICE.OFFICE

 6   AND EMPS.MANAGER = MGRS.EMPL_NUM

 7   AND EMPS.REP_OFFICE <> MGRS.REP_OFFICE  

  1.  Арифметические операторы:

+

Сложение и унарный плюс

-

Вычитание и унарный минус

*

Умножение

/

Деление

**

Возведение в степень

  1.  Операторы отношения (используются в логических выражениях):

=

Равенство

<

Меньше

>

Больше

<>

Не равно

!=

Не равно (альтернатива)

~=

Не равно (альтернатива)

^=

Не равно (альтернатива)

<=

Меньше или равно

>=

Больше или равно

  1.  Выражение и списки (используются в операторах, объявлениях типов данных, объявлениях списков параметров, ссылках на переменные и таблицы):

:=

Присвоение

(

Начало списка или подвыражения

)

Конец списка или подвыражения

,

Отдельные элементы списка (как в списке параметров)

..

Оператор диапазона используется в операторах FOR-IN

||

Конкатенация строк

=>

Ассоциация (используется в списке параметров)

;

Конец выражения

%

Атрибут курсора или типа объекта

.

Спецификация объекта

@

Индикатор удаленной базы данных

'

Начало/конец строки символов

:

Индикатор внешней переменной

&

Индикатор связанной переменной

  1.  Комментарии и метки

--

Комментарий в одной строке

/*

Начало многострочного комментария

*/

Конец многострочного комментария

>>

Начало метки

<<

Конец метки

  1.  SET SERVEROUTPUT ON  выводит сообщение в консоль.
  2.  DBMS_OUTPUT подключает пакет вывода текста в консоль.
  3.  put_line() метод отображения информации в теле BEGIN END.
  4.  BEGIN END - это обрамляющий программный блок.
  5.  DECLARE объявление переменных.
  6.  TO_CHAR()  явное преобразование типа в текстовый
  7.  TO_NUMBER() преобразует строковый литерал  в числовой литерал

SQL> DECLARE

 2  

 3  A VARCHAR2(1) := ' ';

 4  B VARCHAR2(128) := 'Hello World!!!';

 5  C VARCHAR2(128) := 'How ''are'' you?';

 6  D VARCHAR2(128) := 'Hello Bob - "ok"!';

 7  E VARCHAR2(128) := '12345';

 8  F VARCHAR2(128) := '01/01/1989';

 9  G VARCHAR2(128) := '!@#$%^&*()_":;<,.?';

10  H VARCHAR2(128) := ''' ''';

11  

12  I NUMBER := 12345;

13  J NUMBER := -12345;

14  K NUMBER := 12345.023745;

15  L NUMBER := 100.;

16  M NUMBER := 1.0237E2;

17  N NUMBER := 1.0237E-2;

18  O NUMBER := 0.34223;

19  P NUMBER := .321434;

20  

21  BEGIN

22  

23  DBMS_OUTPUT.enable;

24  

25  DBMS_OUTPUT.put_line(A);

26  DBMS_OUTPUT.put_line(B);

27  DBMS_OUTPUT.put_line(C);

28  DBMS_OUTPUT.put_line(D);

29  DBMS_OUTPUT.put_line(E);

30  DBMS_OUTPUT.put_line(F);

31  DBMS_OUTPUT.put_line(G);

32  DBMS_OUTPUT.put_line(H);

33  

34  DBMS_OUTPUT.put_line(TO_CHAR(I));

35  DBMS_OUTPUT.put_line(TO_CHAR(J));

36  DBMS_OUTPUT.put_line(TO_CHAR(K));

37  DBMS_OUTPUT.put_line(TO_CHAR(L));

38  DBMS_OUTPUT.put_line(TO_CHAR(M));

39  DBMS_OUTPUT.put_line(TO_CHAR(N));

40  DBMS_OUTPUT.put_line(TO_CHAR(O));

41  DBMS_OUTPUT.put_line(TO_CHAR(P));

 42  

43  END;

44  /

  1.  DECLARE - Открывается неименованный блок.

Price NUMBER(5,2) := 12.43; - Переменная типа NUMBER (с плавающей точкой

Sytki NUMBER := 123; - Переменная типа NUMBER простая.

LGos  INTEGER := 2; - Переменная типа INTEGER подкласс NUMBER типа.

 Max_Dist CONSTANT REAL := 0.45; -- Константа типа REAL.

 Тип CONSTANT требует обязательной инициализации!

Dis_Tp VARCHAR2(1) := NULL; - Строковая переменная типа VARCHAR2 (присвоено значение NULL)

Ds_Nm CHAR(20) := NULL - Строковая переменная типа CHAR (присвоено значение NULL)

 Tk_Ir VARCHAR2(50) NOT NULL := 'Hello World!!!'; - Строковая переменная типа VARCHAR2 не может иметь значение NULL!

Tk_Sr BOOLEAN NOT NULL := TRUE; - БУЛЕВА! переменная типа BOOLEAN не может иметь значение NULL!

It_Nm VARCHAR2(50) DEFAULT 'Hummer'; - Строковая переменная типа VARCHAR2 имеет значение по умолчанию

  1.  IF логический оператор

IF ( val = 1 ) THEN -- проверка условия

.

 .

ELSIF ( val = 2 ) THEN  

.

.

ELSIF ( val = 3 ) THEN  

 .

.

ELSIF ( val = 9 ) THEN  

.

.

ELSE -- не сработало не одно из условий!

END IF; -- конец условного оператора.

****************************************

SQL> SET SERVEROUTPUT ON

SQL> DECLARE

 2  

 3  A INTEGER := 7;

 4  B INTEGER := 4;

 5  OPER VARCHAR2(2) := '+';

 7  BEGIN

 9   DBMS_OUTPUT.enable;

10   IF (OPER = '+') THEN

11   DBMS_OUTPUT.put_line('Operation is '||OPER||' '||'sum = '||TO_CHAR(A+B));

12   ELSIF (OPER = '-') THEN

13   DBMS_OUTPUT.put_line('Operation is '||OPER||' '||'res = '||TO_CHAR(A-B));

14   ELSIF (OPER = '*') THEN

15   DBMS_OUTPUT.put_line('Operation is '||OPER||' '||'mul = '||TO_CHAR(A*B));

16   ELSIF (OPER = '/') THEN

17   DBMS_OUTPUT.put_line('Operation is '||OPER||' '||'div = '||TO_CHAR(A/B));

 18   END IF;

19  

20  END;

  1.  || оператор соединения в выводе
  2.  & дает возможность вводить данные при компиляции пример: ‘&todo
  3.  PRIMARY KEY то есть является первичным ключом таблицы.

Перезаливка таблицы осуществляется созданием новой таблицы, затем в нее копируем

SQL> INSERT INTO OLD_PEOPLE –-пустая таблица

 2   SELECT * FROM PEOPLE –таблица с которой копируем

 3  /

  1.  DELETE удаление строк

SQL> DELETE FROM PEOPLE

 2   WHERE ID = 3

 3  /

           ******************************

DELETE FROM PEOPLE –удаление всех полей в талице

/

COMMIT

/

UPDATE обновление данных в таблице

SQL> UPDATE PEOPLE

 2   SET FM = 'Jason'

 3  WHERE FM IS NULL

 4  /

          *************************

 SQL> UPDATE PEOPLE

 2   SET NM = 'Irvin',

 3    FM = 'Show',

 4    OT = 'Brefovich'

 5  WHERE ID = 5

          ***************************

    SQL> UPDATE PEOPLE

 2   SET ID = 5+2

 3  WHERE ID = 5

  1.  LOOP оператор цикла бесконечного уловия выхода: EXIT WHEN - Выход при выполнении условия. GOTO - Выход из цикла во внешний контекст. EXIT - Безусловный выход из цикла. Используется посредством применения оператора IF.

 SQL> DECLARE

 2   k NUMBER := 0;

 3  

 4  BEGIN

 5  

 6   WHILE (k < 10) LOOP

 7    k := k + 1;

 8   END LOOP;

 9  

10  END;

11  /

**********************************

SQL> DECLARE

 2   i NUMBER := 0;

 3  

 4  BEGIN

 5  

 6   LOOP

 7   i := i + 1;

 8   IF (i >= 100) THEN

 9    i := 0;

10    EXIT;

11   END IF;

12   END LOOP;

13  

14   LOOP

15    i := i + 1;

16   EXIT WHEN (i >= 100);

17   END LOOP;

 18

19  END;

Вывод четных значений

SQL> DECLARE

 2   i NUMBER := 0;

 3  

 4  BEGIN

 5  

 6   LOOP

 7   i := i + 1;

 8   IF (i >= 100) THEN

 9    i := 0;

10    EXIT;

11   END IF;

12   END LOOP;

13  

14   LOOP

15    i := i + 1;

16   EXIT WHEN (i >= 100);

17   END LOOP;

18

19  END;

  1.  FOR оператор  цикла 

SQL> DECLARE

 2   s NUMBER := 0;

 3  

 4  BEGIN

 5   DBMS_OUTPUT.enable;

 6   FOR i IN 1..20 LOOP

 7    IF(MOD(i, 2) = 1) THEN

 8    DBMS_OUTPUT.put_line(TO_CHAR(i)||' is even!');

 9    s := i;

10    END IF;

11   END LOOP;

12   DBMS_OUTPUT.put_line('last odd number was '||TO_CHAR(s));

13  END;

14  /

***************************************

SQL> BEGIN

 2   DBMS_OUTPUT.enable;

 3   FOR i IN REVERSE 1..10 LOOP –реверс цикла

 4   DBMS_OUTPUT.put_line(TO_CHAR(i)||'-');

 5   END LOOP;

 6   DBMS_OUTPUT.put_line('Blastoff!');

 7  END;

  1.  %TYPE копирует тип переменной

DECLARE

 

v_MYCITY OFFICES.CITY%TYPE;

v_MYSALES OFFICES.SALES%TYPE;

v_TEMPOLD NUMBER(7,4) NOT NULL;

v_DOPTEMP v_TEMPOLD%TYPE;

  1.  SUBTYPE создание подтипа 

DECLARE

         SUBTYPE t_LoopCn IS NUMBER; - Определяем новый тип

v_LpCounter t_LoopCn; - Объявляем переменную с эти подтипом

%ROWTYPE создание типа как таблицы

DECLARE

v_RecOffices OFFICES%ROWTYPE; - таким образом переменная   v_RecOffices получает переменные таблицы OFFICES

Примеры курсоров

DECLARE

- 1.

- Выбрать все заказы:

 CURSOR get_orders IS

 SELECT * FROM ORDERS;

 - 2.

- Выбрать несколько столбцов

- для определенного номера заказа

 CURSOR get_orders(Pord_num ORDERS.order_num%TYPE) IS

 SELECT ORDER_DATE, MFR, AMOUNT FROM ORDERS

 WHERE order_num = Pord_num;

 - 3.

- Получить полную запись

- для определенного номера заказа

 CURSOR get_orders(Pord_num ORDERS.order_num%TYPE) IS

 SELECT * FROM ORDERS

 WHERE order_num = Pord_num

 RETURN ORDERS%ROWTYPE;

 

- 4.

- Получение имени сотрудника

 - по его номеру

CURSOR get_name(empl_nm SALESREPS.empl_num%TYPE)

 RETURN SALESREPS.name%TYPE IS

 SELECT name FROM SALESREPS WHERE empl_num =

Практическая часть

Описание работы.

На данный момент в каждом банке или же филиале банка есть так называемый операционный зал – это помещение в банке, где осуществляются клиентские операции в течение банковского дня. На каждого бухгалтера в таком операционном зале есть определенная группа организаций которые они обслуживают. И естественно есть единая программа по обработки таких операций. В нашем банке данная программа написана на Oracle, что позволяет гибкое обслуживание данной программы, т.к. есть детальная раздача прав, вплоть до ограничения определённого пути, и сама структура Oracle хорошо подходит для банковских операций.

Принцип в программе следующий: Клиент оплатив платежное поручение через систему СДБО (система дистанционного банковского обслуживания) подписав платежное поручение своей подписью СКЗИ (средства криптографической защиты информации), отправляет платеж в банк, в банке же он изначального с почтового сервера падает в СУБД Oracle, где его обрабатывает демон (функция автоматической обработки), демон проверяет платеж на наличие ошибок, такие как корректно указанный счет, бик банка, ИНН, КПП и естественно подпись клиента, если на данном этапе возникли ошибки то платеж автоматически уходит отправителю, с причиной отказа, если же демон ошибок не заметил, то платеж попадает дальше в иерархическую структуру СУБД, на этом этапе платеж присваивается к определенному бухгалтеру, иными словами исполнителю, т.е. программно за ранее распределен каждый клиент по группам. Бухгалтер увидев платеж принимает меры, в зависимости он суммы платежа, оплатив и подтвердив что оплата платежа прошла СУБД так же отправляет отчет на клиент сервер СДБО об отчете проплаченной операции, после чего так же формируеться выписка по данному счету и так же отправляется через клиент сервер на СДБО клиента.

Время от времени возникают проблемы с определением групп в операционном зале, т.к. сотрудники не роботы, и могут элементарно заболеть, или же пойти в отпуск, в таких случаях группа распускается, данная ситуация еще не отработана и приводит каждый раз в затруднение инженеров и бухгалтеров операционного зала.

Техническое задание

 Автоматизировать процесс перевода групп бухгалтеров с возможностью восстановления предыдущего значения групп, т.е. если сотрудник ушел в отпуск, его группу «распускают»,  а по приходу собирают вновь ту же группу.

Этап 1: Сбор информации по группам:

Была разработана следующая программа для вытягивания информации с СУБД, для дальнейшего расписания с какой группы на какую нужно осуществить переброс.

Код программы:

set tab off heading on feed on

set echo off termout on

linesize 230 pagesize 400

col acc    for a15  heading 'старый счет'

col accn   for a21  heading 'счет'

col exeold for a6   heading 'откуда'

col exenew for a6   heading 'куда'

col name   for a150 heading 'Наименование счета'

accept EXE_OLD number prompt 'ИСПОЛНИТЕЛЬ: '

spool &EXE_OLD.v.txt

select to_char(c.acc,'9999999999999') acc,

      c.accn accn,

      '<'||to_char(c.exe,'99')||'>' exeold,

      '<   >' exenew,

      substr(c.name,1,150) name

from cr_acc c

where c.exe = &EXE_OLD

and not b2n in ('90901','90902')

and c.dtc is null

order by substr(accn,17,4), substr(accn,1,5), substr(accn,14,3);

;

exit;

По запросу данной программы через СУБД Oracle вытягиваем нужную нам информацию из таблицы, и формируем ее в наглядный вид, запуск программы осуществляется командной строкой: sql exe_ved.sql

После чего получаем исходящий файл в зависимости от  группы которую мы раскидываем. Пример: 4 группа имя 4v.txt

После чего распечатываем данный файл и предаем на группу, после того как его отредактирует какие счета на какую группу перевести отдают нам файл обратно

Рисунок 1 – счета клиентов с иполнителем.

Этап 2: Разброс группы

Для разброса группы так же была написана программа для реализации загрузки предыдущего сформированного файла и обработки его для переброса по информации операционного зала.

Код программы:

* Входной  файл: Файл 99v.txt, где 99 - номер исполнителя

* Выходной файл: exe_upl.sql - этот файл загрузить в /u/home/sgv/rep/exe_move

* и отработать (в командной строке запустить ...>sql exe_upl.sql)

*

PROCEDURE upl

PARAMETERS infile

SET ALTERNATE TO exe_upl.sql

SET ALTERNATE ON

SET CONSOLE ON

loadfb3_(infile)

db_name=token(infile,[.],1)+[.dbf]

USE &db_name

GO TOP

DO WHILE !EOF()

   DO CASE

      CASE SUBSTR(pole_01,46,1) = "<" .and. SUBSTR(pole_01,47,3)#'   '

           ? "execute cr_upexe("+SUBSTR(pole_01,2,13)+","+SUBSTR(pole_01,47,3)+");"

   ENDCASE

   SKIP

ENDDO

CLOSE DATABASES

?

? "commit;"

?

? "exit;"

erase &db_name

RETURN

PROCEDURE loadfb3_

PARAMETERS c

LOCAL k1, maxlen:=0, step_wh:=1, fl_name, db

LOCAL bufer, handle, block, area, tec_pos, strn_tec, bytes

LOCAL end_area, end_file, filelen

set scoreboard off

Fl_name = c

block=4096

bufer=space(block)

handle=fopen(fl_name)

 if handle=-1

   ? [невозможно открыть файл, ошибка DOS]

 endif

filelen=fseek(handle,0,2)

do while step_wh <= 2

   fseek(handle,0,0)

   area =[]

   tec_pos=1

   strn_tec = 0

   end_file = .f.

   end_area = .f.

   if step_wh = 1

   else

      db_name=token(fl_name,[.],1)+[.dbf]

      crt_dbf( db_name + [ pole_01, ] + [c,]+ STR( maxlen, 3) + [ , 0 ] )

      USE &db_name

   endif

   do while !end_file

      bytes=fread(handle,@bufer,block)

      end_area=.f.

      if bytes<>block

         end_file=.t.

         if bytes=0

            end_area=.t.

         else

            area=substr(area,tec_pos)+substr(bufer,1,bytes)

         endif

      else

         area=substr(area,tec_pos)+bufer

      endif

      tec_pos=1

      do while .not.(end_area)

         k1=atnum(chr(13)+chr(10),area,1,tec_pos-1)

         if k1=0

            k1=atnum(chr(26),area,1,tec_pos-1)

            if k1<>0

               end_file=.t.

               if k1=tec_pos

                  exit

               endif

            else

               end_area=.t.

               loop

            endif

         endif

         strn_tec=strn_tec+1

         fl_rec=substr(area,tec_pos,k1-tec_pos)

         tec_pos=k1+2

         if step_wh = 1

            maxlen=max(maxlen,LEN(fl_rec))

         else

            append blank

            replace pole_01 with fl_rec

         endif

      enddo

   enddo

   step_wh = step_wh + 1

enddo

fclose(fl_name)

RETURN

*---Процедура crt_dbf ---------------------------------------------------------

PROCEDURE crt_dbf

     PARAMETERS c

     LOCAL k1,k2,i,db_name

     CREATE new_stru

     USE    new_stru

     k1=NUMTOKEN(c,[ ,])

     FOR i=1 to (k1-1)/4

         APPEND BLANK

         k2=(i-1)*4+2

         REPLACE field_name WITH TOKEN(c,[ ,],k2)

         REPLACE field_type WITH TOKEN(c,[ ,],k2+1)

         REPLACE field_len  WITH VAL(TOKEN(c,[ ,],k2+2))

         REPLACE field_dec  WITH VAL(TOKEN(c,[ ,],k2+3))

     NEXT

     db_name=TOKEN(TOKEN(c,[ ,],1),[.],1)+[.DBF]

     CREATE &db_name FROM new_stru

*     CLOSE DATABASES

     erase new_stru.dbf

 RETURN(NIL)

Программа работает следующим способом: запускается сама программа со свойством файла сформированного предыдущего этапа, после чего программа создает файл EXE_UPL.SQL. Этот файл содержит непосредственно функцию и группу для переброса группы, после формирования данного файла можно запускать запрос SQL в СУБД следующей командой: SQL EXE_UPL.SQL, после чего СУБД Oracle обработает данный запрос и перенесет группы по им новым местам.

Рисунок 2 – сформированный файл EXE_UPL.SQL

Этап 3: Возврат группы обратно

Для возращения на «круги своя» так же была разработана программа

Работает она следующим образом. Файл который сформирован на первом этапе и расписан бухгалтерами операционного зала запускаем свойствам к написанной программе с наименованием UPL_BACK.

Код программы:

PROCEDURE upl_back

PARAMETERS infile

SET ALTERNATE TO exe_upl.sql

SET ALTERNATE ON

SET CONSOLE ON

loadfb3_(infile)

db_name=token(infile,[.],1)+[.dbf]

USE &db_name

GO TOP

DO WHILE !EOF()

   DO CASE

      CASE SUBSTR(pole_01,46,1) = "<" .and. SUBSTR(pole_01,47,3)#'   '

           ? "execute cr_upexe("+SUBSTR(pole_01,2,13)+","+SUBSTR(pole_01,40,3)+");"

   ENDCASE

   SKIP

ENDDO

CLOSE DATABASES

?

? "commit;"

?

? "exit;"

erase &db_name

RETURN

PROCEDURE loadfb3_

PARAMETERS c

LOCAL k1, maxlen:=0, step_wh:=1, fl_name, db

LOCAL bufer, handle, block, area, tec_pos, strn_tec, bytes

LOCAL end_area, end_file, filelen

set scoreboard off

Fl_name = c

block=4096

bufer=space(block)

handle=fopen(fl_name)

 if handle=-1

   ? [невозможно открыть файл, ошибка DOS]

 endif

filelen=fseek(handle,0,2)

do while step_wh <= 2

   fseek(handle,0,0)

   area =[]

   tec_pos=1

   strn_tec = 0

   end_file = .f.

   end_area = .f.

   if step_wh = 1

   else

      db_name=token(fl_name,[.],1)+[.dbf]

      crt_dbf( db_name + [ pole_01, ] + [c,]+ STR( maxlen, 3) + [ , 0 ] )

      USE &db_name

   endif

   do while !end_file

      bytes=fread(handle,@bufer,block)

      end_area=.f.

      if bytes<>block

         end_file=.t.

         if bytes=0

            end_area=.t.

         else

            area=substr(area,tec_pos)+substr(bufer,1,bytes)

         endif

      else

         area=substr(area,tec_pos)+bufer

      endif

      tec_pos=1

      do while .not.(end_area)

         k1=atnum(chr(13)+chr(10),area,1,tec_pos-1)

         if k1=0

            k1=atnum(chr(26),area,1,tec_pos-1)

            if k1<>0

               end_file=.t.

               if k1=tec_pos

                  exit

               endif

            else

               end_area=.t.

               loop

            endif

         endif

         strn_tec=strn_tec+1

         fl_rec=substr(area,tec_pos,k1-tec_pos)

         tec_pos=k1+2

         if step_wh = 1

            maxlen=max(maxlen,LEN(fl_rec))

         else

            append blank

            replace pole_01 with fl_rec

         endif

      enddo

   enddo

   step_wh = step_wh + 1

enddo

fclose(fl_name)

RETURN

*---Процедура crt_dbf ---------------------------------------------------------

PROCEDURE crt_dbf

     PARAMETERS c

     LOCAL k1,k2,i,db_name

     CREATE new_stru

     USE    new_stru

     k1=NUMTOKEN(c,[ ,])

     FOR i=1 to (k1-1)/4

         APPEND BLANK

         k2=(i-1)*4+2

         REPLACE field_name WITH TOKEN(c,[ ,],k2)

         REPLACE field_type WITH TOKEN(c,[ ,],k2+1)

         REPLACE field_len  WITH VAL(TOKEN(c,[ ,],k2+2))

         REPLACE field_dec  WITH VAL(TOKEN(c,[ ,],k2+3))

     NEXT

     db_name=TOKEN(TOKEN(c,[ ,],1),[.],1)+[.DBF]

     CREATE &db_name FROM new_stru

*     CLOSE DATABASES

     erase new_stru.dbf

 RETURN(NIL)

Программа работает следующим образом запускаем программу UPL_BACK с параметром сформированным на первом этапе. Пример UPL_BACK 4v.txt 

После чего формируется файл EXE_UPL.SQL его так же запускаем в СУБД Oracle следующей командой SQL EXE_UPL.SQL после чего в СУБД вернется все в изначальное значение, до переброса.   

Заключение

За время производственной практики обучился работать с Oracle в частности в разработке программного обеспечения, за время практики было написано 3 мини программы в комплексе взаимодействующие между собой, что облегчило работу как бухгалтерии филиала так инженеров филиала, в следствии чего была произведена автоматизация процесса переброса групп в операционном зале, в следствие чего было уменьшено время обработки информации и качество полноты данных. В дальнейшем программа будет дорабатываться и 3 блочный комплекс планируется перевести на отдельный программный блок написанный на C# связанный с СУБД Oracle.

Список литературы:

  1.  http://www.oracle.com
  2.  Генник Джонатан , Oracle SQL*Plus. Карманный справочник. 2-е издание, 2004г. 205-214с.
  3.  Грин Джо, Oracle 8. Энциклопедия пользователя , 2001г. 106-105с, 256-270с.
  4.  http://www.chelindbank.ru
  5.  http://www.firststeps.ru/ 
  6.   Санжей Мишра, Алан Бьюли , Секреты Oracle SQL , 2003г. 10-45с.




1. I Перевозка грузов морским транспортом осуществляется на основании соответствующего договора который сост
2. Level и выборку с адаптивным подразделением dptive Subdivision Smpler
3. Понятие и образ природы в философии и науке Понятие природы одновременно является философским понятие.html
4. Лекция 5 Механические свойства мышц Одно из основных свойств мышц способность сокращаться
5. Выдающиеся деятели древнегреческой науки и философии.
6. Советский человек
7. Лабораторная работа 4 Тема- Поведение операционного усилителя в динамике Цель работы- Исследование раз
8. тема дипломной работы Учётанализ аудит оплаты труда на примере КировоЧепецкого химкомбината им
9. Туризм на Сейшелах
10. 201425012014 кафедры социальных наук фКФУ
11. Пищевые продукты в жизнедеятельности человека и значение их качества
12. Зоопсихология в XVIII~XIX вв
13. Джордж Гордон Байрон Каин
14. одна из древнейших категорий общественных отношений
15. Волшебное Закарпатье 1 день Сбор группы на ж-д вокзале г
16. Аграрные революции в Украине в контексте переломов политических эпох истоки и сущность
17. Первый нерест Acanthophthalmus myersi
18. Владимир Ворошилов
19. ной деятельности на окружающую среду и природные ресурсы.html
20. Тема 13 Моніторинг стану ґрунтів Розвиток промисловості особливо сільськогосподарського виробництва