Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: VC++ & OLEDB  (Прочитано 9418 раз)
0 Пользователей и 5 Гостей смотрят эту тему.
query
Гость
« : 21-10-2003 05:23 » 

Используется VC++ & OLEDB для коннекта к ORACLE

Есть проблема с получением возвращаемых параметров (OUT) из хранимых процедур ORACLE с использованием OLEDB процедуры без возвращаемых параметров вызываются и отрабатывают без проблем.
Возможно кто то знает как правильно получать эти параметры.
Буду благодарен за рабочий пример (в принципе можно пример для MSSQL Server разницы большой нет).

можно на почту (asch@krovatka.net) или прямо в форум
Записан
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 21-10-2003 05:37 » 

В MS Sql нет возвращаемых параметров(покрайней мере в 7м небыло).

Так как насколько я помню OLEDB  выпускается MS то он может просто не поддерживать сию функцию.

Ты собственно с чем работаешь с чистым OLEDB или с надствойкой над ним  типа ADO ?
Записан

Да да нет нет все остальное от лукавого.
NetRaider
Гость
« Ответ #2 : 22-10-2003 04:23 » 

Это ипользовалось для sql2000

Код:
class SingleResultSPCaller
{
public:

SingleResultSPCaller(_ConnectionPtr conn) {
m_conn = conn;
m_cmd.CreateInstance(__uuidof(Command));
m_cmd->ActiveConnection = m_conn;
m_cmd->CommandType = adCmdStoredProc;
}

virtual ~SingleResultSPCaller()|"

void SetProcedureName(_bstr_t bstrName) {
m_cmd->CommandText = bstrName;
m_cmd->Parameters->Refresh();
}

void AddInputParam(_bstr_t bstrParamName, _variant_t vtParamValue) {
m_cmd->Parameters->Item[_variant_t(bstrParamName)]->Value = vtParamValue;
}

_variant_t Exec(_bstr_t bstrOutParamName) {
_RecordsetPtr rs = NULL;
rs = m_cmd->Execute(NULL, NULL, adCmdStoredProc);
return m_cmd->Parameters->Item[_variant_t(bstrOutParamName)]->Value;
}

protected:
_ConnectionPtr m_conn;
_CommandPtr m_cmd;
}
Использовать так
Код:
SingleResultSPCaller caller(spConn);     // spConn должен быть валидным

// Имя процедуры
caller.SetProcedureName(L"sp_MyProc");   

// Имя входного параметра(можно вызывать несколько раз)
caller.AddInputParam(L"@input_param", "blablabla");

// Имя выходного параметра(здесь ипользуется только один, но можно сделать несколько)
_variant_t vt = caller.Exec(L"@MyOutParamName");   
// после этого в vt результат

Ну и все это в try/catch завернуть.
« Последнее редактирование: 20-11-2007 18:02 от Алексей1153++ » Записан
query
Гость
« Ответ #3 : 22-10-2003 05:09 » 

Цитата: PSD
В MS Sql нет возвращаемых параметров(покрайней мере в 7м небыло).

Так как насколько я помню OLEDB  выпускается MS то он может просто не поддерживать сию функцию.

Ты собственно с чем работаешь с чистым OLEDB или с надствойкой над ним  типа ADO ?


Нет ADO я не использую насколько мне известно OLEDB используются для прямого доступа к различным базам данных OraOLEDB - для доступа к ORACLE .. SQLOLEDB для доступа к MSSQLServer к большинству наиболее известных есть точно

А по поводу отсутствия на счет SQLServ7 точно не помню но в SQLServ2000 это есть - цитата из документации:

CREATE PROC [ EDURE ] procedure_name [ ; number ]
    [ { @parameter data_type }
        [ VARYING ] [ = default ] [ OUTPUT ]
    ] [ ,...n ]

[ WITH
    { RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION } ]

[ FOR REPLICATION ]

AS sql_statement [ ...n ]
Записан
query
Гость
« Ответ #4 : 22-10-2003 06:18 » new

Цитата: NetRaider
Это ипользовалось для sql2000
Спасибо попробую так.
Записан
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #5 : 22-10-2003 07:37 » 

В 7.0 этого нет в 2000 сильно расширены возможности хранимок.
Записан

Да да нет нет все остальное от лукавого.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines