Създаване на функции в Oracle, VR-онлайн - Безплатно електронно издание за всички

Публикувано от petrovichtim в петък, 02/11/2012 - 07:32

създаване

СУБД Oracle разполага с почти всички възможни инструменти за манипулиране на данни. В съвременните реалности разработчиците поставят цялата тежест на изчисленията върху мощни сървъри. Това позволява на клиентските машини да не изискват много ресурси. В базата данни, която изучаваме, броят на системните функции се увеличава от версия на версия. Функциите и процедурите са свързани заедно. Ако нещо ви липсва, винаги можете да напишете пакета си със собствена (само вие се нуждаете) функционалност. Пакетите са много удобни за разработване и внедряване в производството.

След като сте написали пакет от функции за себе си, е лесно да го разтоварите от базата данни, да го изпратите в производствената, където ще бъде разположен и ще получи подобна база данни. Трябва да се отбележи, че всички индустриални СУБД имат сходни възможности, разширявайки езика SQL, PL/SQL от Orakl, T-SQL от Microsoft, PL/pgSQL за PostgreSQL, SQL/PSM за MySQL и други.

Почти всеки производител на СУБД се опитва да създаде свой собствен SQL диалект със собствено име. Очевидно в това преследване на американски компании има повече политика и маркетинг, отколкото здрав разум. Никой не пречи на компаниите да издадат нов SQL стандарт, но никой не го прави. Трудностите, свързани с прехода от една СУБД към друга, всъщност означават разработването на цялата система от нулата. В този случай SQL диалектът действа като котва за предприятията. Изборът на база данни в предприятието се извършва по същество веднъж; по-късно функционалността от един диалект на друг ще бъде пренаписана само в екстремни случаи, тъй като това изисква много пари и време.

Сега ще напишем функция (Table_Count), която ще извикаме в процедурата (PRS_Goods_Count).

Функцията ще върне броя на записите в таблицата, тя ще бъде извикана с желаното име на таблица.
създаване или замяна на функция Table_count (My_Table във varchar2)
номер за връщане
е
n номер;
s varchar2 (1000);
започнете
s: = 'изберете брой (*) от' || My_Table;
изпълнете незабавно s в n;
връщане n;
край;

oracle

Сега ще напишем процедура, в която ще извикаме нашата функция
създаване или замяна на процедура prs_goods_count (my_table във varchar2, n номер)
е
започнете
n: = брой_таблица (моя_таблица);
край;

безплатно

Сега нека добавим нашия клиент.

Вие сами можете да донесете формуляра за стартиране на този формуляр

vr-онлайн

Ето кода за стартиране на новата ни тема
процедура TThreads_Form.Button3Click (Изпращач: TObject);
вар
Нишка на стоки: Нишка на стоки_Кола;
i: цяло число;
започнете
if (Length (trim (Table_Name_Edit.Text))) <> тогава
започнете
Стока_нишка: = Стоки_Кола_нитка.Създаване (Вярно); // създаде поток
Goods_thread.name:=Table_Name_Edit.text; // предаде броя на записите
Goods_thread.FreeOnTerminate: = Вярно; // почистване при завършване
Стока_нишка.Резюме; // стартиране
край
друго
ShowMessage ('Името на таблицата не е посочено'); // показваме съобщение
край;
Ето нов модул за нишка, неговата особеност е, че той стартира процедура с параметри и връща стойност от нея.
единица Goods_Count_thread_Unit;
интерфейс
използва
System.Classes, Adodb, SysUtils, ActiveX, Graphics, DB;
Тип
Goods_Count_Thread = клас (TThread)
публично
име: низ; // име на таблица
n: цяло число; // брой записи
защитен
Състояние: низ; // състояние на потока
процедура Изпълнение; заместване;
процедура UpdateStatus;
процедура UpdateCount;
край;
изпълнение
използва Threads_Unit;
процедура Goods_Count_Thread.Execute;
вар
CON1: TADOConnection; // компонент за свързване
SP1: TADOStoredProc; // компонент на процедурата
започнете
Състояние: = 'активен'; // статусът е активен
Синхронизиране (UpdateStatus); // актуализира основната нишка
NameThreadForDebugging ('Стоки_Количество');
CoInitialize (нула);
CON1: = TADOConnection.Create (нула); // създадох клас на свързване