Тема хранимых процедур на C# меня заинтересовала, хоть и не совсем понятно зачем это (хранимые процедуры на C#) нужно, но забавно. Впрочем надобность хранимых процедур Oracle на Java также остается для меня туманной.

Сначала пришлось повозиться с Oracle Database Extensions for .NET: оказалось, что к листенеру не был подключен ICP протокол, не был запущен агент для CLR и не был прогнан скрипт DBMSClr.plb после установки ODE.NET. Потом возник вопрос с коннектом из процедуры: ведь глупо в хранимой процедуре, которая запускается врапленной PL/SQL процедурой из схемы, писать в строке подключения имя пользователя, пароль и базу. Ответ нашелся в виде строки подключения "context connection=true". После этого все заработало.
Исходники простенькой функции:

using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types; 

namespace OraTest
{
    public class Class1
    {
        public static Int32 AbonentsCount()
        {
            //Создаем соединение
           
OracleConnection con = new OracleConnection();
            con.ConnectionString = "context connection=true";
            con.Open();
            //Создаем команду
           
OracleCommand cmd = new OracleCommand();
            cmd.CommandText = "select count(*) cnt from prom_abonent";
            cmd.Connection = con;
            Int32 res = 0;
            res = Convert.ToInt32(cmd.ExecuteScalar());
            cmd.Dispose();
            con.Close();
            return res;
        }
    }

Запуск:
select abonentscount from dual; 

Написал и уже потом нашел туториал от Оракла на эту тему:
http://www.oracle.com/pls/xe102/to_toc?pathname=appdev.102%2Fb25312%2Ftoc.htm&remark=portal+%28Getting+Started%29

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: