| « Поставить закладку » « Сделать стартовой » | |||
|
|||
|
Статьи:: Базы данных :: Oracle :: Разработка .NET-хранимых процедур для Oracle10g Database for Windows. Профессионалу-разработчику
Разработка .NET-хранимых процедур для Oracle10g Database for Windows. Профессионалу-разработчику
Игорь Мельников melnikov_ii@mail.ru СОДЕРЖАНИЕ
Введение Признавая популярность платформы Microsoft .NET среди разработчиков приложений на платформе Windows, Oracle Corporation, начиная с версии 10g Rel.2 интегрировала .NET CLR в свою СУБД. Теперь разработчики приложений для Oracle Database for Windows могут создавать хранимые процедуры в виде сборок .NET. Интеграция с CLR предлагает множество выгод разработчикам приложений для Oracle Database:
Рассмотрим технологию создания и выполнения .NET-хранимых процедур. Ключевым инструментом для создания .NET-хранимых процедур является Oracle Developer Tools for .NET [ODT .NET] - представляет собой набор свободно доступных инcтрументов разработчика для платформы .NET. В состав ODT .NET входят подключаемые модули (plug-ins) к средам разработки Microsoft Visual Studio .NET 2003/2005. ODT .NET позволяет, наряду с разработкой .NET-хранимых процедур, также создавать клиентские приложения работающие с СУБД Oracle Database. Для взаимодействия с базами данных Oracle используются механизмы ADO .NET.В случае если для выполнения приложений используется окружение NET Framework версии 1.1, то для разработки используется MS Visual Studio 2003 и ADO .NET 1.1. Если же приложения планируется выполнять в окружении .NET Framework версии 2.0 - для разработки используется MS Visual Studio 2005 и ADO .NET 2.0.
Для трансляции высокоуровневых вызов ADO .NET в "родные" (native)
низкоуровневые вызовы Oracle Call Interface, корпорация Oracle
поставляет свой собственный провайдер ADO DB .NET. В составе клиентского
программного обеспечения Oracle Database 10g Rel.2 Client поставляется
два провайдера доступа - для версий ADO .NET 1.1 и ADO .NET 2.0. Для выполнения хранимых процедур, реализованных в сборках .NET, на сервере базы данных, предназначен компонент Oracle Database Extensions for .NET [ODE .NET]. Указанный компонент входит в дистрибутив Oracle Database 10.2.0 for Windows. ![]() Установка Oracle Database Прежде всего, необходимо отметить тот очевидный факт, что возможность создания .NET-хранимых процедур возможна только для Oracle Database на платформе MS Windows. Поддержка выполнения .NET-хранимых процедур доступна во всех редакциях СУБД Oracle: начиная от бесплатной версии (Express Edition) и заканчивая корпоративной редакцией (Enterprise Edition). Для включения возможности выполнения .NET-хранимых процедур, при установке программного обеспечения Oracle Database 10g Rel.2 for Windows, в списке компонентов необходимо выбрать Oracle Database Extensions for .NET. ![]() Рис.2 Выбор установки ODE.NET в среде Oracle Universal Installer ![]() Рис.3 Выбор Oracle Database Extensions for .NET при установке ODT .NET ![]() Рис.4 Выбор при установке ODE 10.2.0.2, каталога с установленной Oracle Database ![]() Рис.5 Выбор версии .NET Framework для выполнения .NET-хранимых процедур SQL> @?/rdbms/admin/dbmsclr.plb Установка Oracle Developer Tools for Visual Studio .NET Для поддержки процесса разработки .NET-хранимых процедур, необходимо установить подключаемый модуль, входящий в состав ODT .NET, к среде MS Visual Studio. В случае установки Oracle Developer Tools for Visual Studio .NET на машине с уже установленной Oracle Database, ODT .NET необходимо установить в отдельный каталог (ORACLE_HOME). Oracle Developer Tools for Visual Studio .Net, также как и ODE .NET, входит в состав Oracle Developer Tools for .NET 10.2.0.2. ![]() Рис.6 Установка Oracle Developer Tools for Visual Studio .NET ![]() Рис.7 Выбор компонентов для MS Visual Studio .NET 2005
Где: HOME_NAME - внутреннее имя для домашнего каталога, в который установлено ПО Oracle Database. Значения ключа ".NET Framework" могут быть следующими:
![]() Рис.8 Определение версии .NET Framework 2.0 для выполнения .NET-хранимых процедур
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = c:oracleproduct10.2.0db)
(PROGRAM = extproc)
)
(SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = c:oracleproduct10.2.0db)
(PROGRAM = extproc)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = mypc)(PORT = 1521))
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
)
Содержимое файла tnsnames.ora должно включать в себя два алиаса:
ORACLR_CONNECTION_DATA и EXTPROC_CONNECTION_DATA:
ORACLR_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
(CONNECT_DATA =
(SID = CLRExtProc)
(PRESENTATION = RO)
)
)
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)
В заключение, необходимо убедиться, что запущены два сервиса, которые необходимы
для выполнения .NET-хранимых процедур:
![]() Рис.9 Для выполнения .NET-хранимых процедур на сервере должны быть запущены сервисы TNSLlistener и CLRAgent Создание .NET-хранимых процедур в среде MS Visual Studio 2005 и .NET Framework 2.0 В данном разделе будет рассмотрен процесс создания и выполнения .NET-хранимых процедур с помощью среды разработки MS Visual Studio 2005 и среды выполнения .NET Framework 2.0. После установки ODT .NET в среде MS Visual Studio 2005 доступен новый шаблон проекта "Oracle Projects". ![]() Рис.10 Выбор шаблона проекта "Oracle Project" в среде MS Visual Studio 2005 После выбора шаблона проекта "Oracle Project", автоматически генерируется следующий шаблон кода (используется язык программирования C#):
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;
namespace OraNetSPSample1
{
public class Class1
{
public static void StoredProcedure1()
{
// enter you code here
}
}
}
В качестве примера, будет создана хранимая функция getDatabaseVersionStr,
возвращающая строку с версией базы данных
Oracle Database:
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;
namespace OraNetSPSample1
{
public class Class1
{
public static String getDatabaseVersionStr()
{
String v_xResult;
// Получаем объект соединения с базой данных:
OracleConnection v_xConnection = new OracleConnection();
v_xConnection.ConnectionString = "context connection=true";
//открываем соединение:
v_xConnection.Open();
//создаем команду-запрос к базе даных:
OracleCommand v_xCommand = v_xConnection.CreateCommand();
v_xCommand.CommandText = "select * from v$version";
//выполняем запрос:
OracleDataReader v_xReader = v_xCommand.ExecuteReader();
//считываем результат
v_xReader.Read();
v_xResult = v_xReader.GetString(0);
//освобождаем объекты
v_xReader.Close();
v_xCommand.Dispose();
//Возвращаем результат:
return v_xResult;
}
}
}
В одной сборке может содержаться несколько .NET-хранимых процедур. Все
они должны быть реализованы как статические методы класса.
Публикация .NET-хранимых процедур в среду
выполнения на сервере Oracle Database
Процесс публикации .NET-хранимой процедуры на сервере Oracle Database состоит из
двух шагов:
![]() Рис.11 Запуск мастера публикации сборки на сервере Oracle Database ![]() Рис.12 Создание соединения к базе даных
![]() Рис.13 Выбор режима публикации .NET-процедуры ![]() Рис.14 Определение имени внешней библиотеки (external library) Oracle Database ![]() Рис.15 Выбор файлов дял копирования на сервер ![]() Рис.16 Определение схемы БД для публикации хранимой процедуры ![]() Рис.17 Установка соответствия типов .NET и Oracle Database ![]() Рис.18 Для проверки работоспособности процедуры можно выполнить в среде SQL*Plus следующий набор команд: SQL> conn spnet_demo/spnet_demo Соединено. SQL> set serveroutput on SQL> exec dbms_output.put_line(GetDatabaseVersionStr); Oracle Database 10g Enterprise Edition Release 10.2.0.2.0 - Prod Процедура PL/SQL успешно завершена.Отличительной особенностью .NET-хранимых процедур является возможность их отладки на стороне клиента. Для этого достаточно заменить строку соединения в свойстве ConnectionString класса OracleConnection на соединение к удаленной базе данных. Для этого можно использовать либо макроподстановку, либо глобальную строковую переменную: Рубрика: Oracle
Подгрузка через AJAX HTML-кода, содержащег....
При разработке CMS S.Builder наша команда активно использовала AJAX. Теперь вот решили поделиться накопленным опытом. Начнем с этого хабратопика. Не буду здесь затрагивать различные фреймворки и библиотеки. Свой код всегда роднее. Для работы с AJAX-ом в S.Builder написана библиотека sbAJAX. Можете качать и пользоваться :). В этом файле есть функция sbEvalJS. Для тех, кто не знает, объясню. При подгрузке через AJAX и вставке на страницу HTML-кода, содержащего JavaScript, JavaScript выполняться не будет или полезут баги. Эта функция как раз решает поставленную задачу.
Подробнее... |
Рубрика: AJAX
| Добавлено: 19.11.2008
Обзор нового релиза самой мощной Ajax библ....
Хотя наш обзор немного запоздал, оригинальный Dojo 1.2 вышел в релизной версии ещё 6-го октября, но сейчас мы наверстаем упущенное. И так, Dojo Toolkit — это самая мощная и гибкая ajax-библиотека из всех, что есть на рынке, она активно развивается и имеет большое комьюнити. Кстати, это самое комьюнити, совместно с компанией Sitepen, имеет ещё несколько проектов, среди которых и Cometd и некоторые другие, не менее интересные, о которых мы скоро вам расскажем. Сегодня же все внимание на флагманский продукт — Dojo 1.2.
Подробнее... |
Рубрика: AJAX
| Добавлено: 19.11.2008
Firebug 1.3 и 1.4 alpha — что нового и инт....
Если вы профессиональный веб-разработчик и постоянно имеете дело с разработкой и отладкой сложных AJAX приложений, то наверняка знаете и используете Firebug — плагин для браузера Firefox, предназначенный для отладки и исследования веб-приложений. Текущая его версия, 1.2х достаточно стабильная и функциональна, чтобы помочь в 99% проблем, которые могут возникнуть при разработке. Но и этот инструмент не лишён если не недостатков, то некоторых фич, которые могли бы облегчить работу. И даже идеальный инструмент можно сделать ещё более идеальным, как бы это не звучало.
Подробнее... |
Рубрика: Вебмастеру
| Добавлено: 19.11.2008
Остальные статьи: |
Цитата дня (все,добавить):
|
Realcoding.NET
© 2003-2008 |
Контакты |
Реклама на сайте
|