Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / VC++ и oracle / 8 сообщений из 8, страница 1 из 1
22.12.2005, 16:26
    #33452591
maksi_m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VC++ и oracle
Доброго времени!
покажите пожалуйста, если не тайна ;) пример обращения к хранимой процедуре PL/SQL и получения параметров ...
заранее благодарен !
...
Рейтинг: 0 / 0
22.12.2005, 17:39
    #33452776
D_N_SL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VC++ и oracle
OCCI
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
 string compName=_compName, workgroup=_workgroup;
 int compID, workgroupID;
	
 try
	{
	 Environment *env= Environment::createEnvironment();

	 Connection *conn = env->createConnection(login, pass, sid);

	 Statement *stmt = conn->createStatement("BEGIN search_files.GetCompID(:workGroup, :compName, :workGroupID, :compID); END;");
	 stmt->setString ( 1 , workgroup); //âõîäíîé ïàðàìåòð
	 stmt->setString ( 2 , compName);  //âõîäíîé ïàðàìåòð
	 stmt->registerOutParam( 3 , OCCIINT, sizeof(workgroupID)); //âûõîäíîé ïàðàìåòð
	 stmt->registerOutParam( 4 , OCCIINT, sizeof(compID)); //âûõîäíîé ïàðàìåòð

	 stmt->executeUpdate ();
	 workgroupID=stmt->getInt( 3 );
	 compID=stmt->getInt( 4 );
	 
	 conn->terminateStatement(stmt);
	 env->terminateConnection(conn);
	 Environment::terminateEnvironment(env);
	}
 catch (SQLException & ex)
	{MessageBox (NULL,(ex.getMessage ()).c_str(), "Îøèáêà!", MB_ICONSTOP);	 

	 CLogErrors m_logErr;
     m_logErr.dlg->OutLog ("Err - Îøèáêà íà ýòàïå îïðåäåëåíèÿ ID_COMP ïî åãî èìåíè ("+_compName+")");

	 return - 1 ;
	}

 return compID;

Входные: workgroup, compName
Выходные: workgroupID, compID
...
Рейтинг: 0 / 0
27.12.2005, 16:21
    #33459984
maksi_m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VC++ и oracle
а в чем может быть проблема ?
на такой код ругается:
Код: plaintext
1.
2.
3.
4.
5.
Linking...
oracle.obj : error LNK2001: unresolved external symbol "public: static void __cdecl oracle::occi::Environment::terminateEnvironment(class oracle::occi::Environment *)" (?terminateEnvironment@Environment@occi@oracle@@SAXPAV123@@Z)
oracle.obj : error LNK2001: unresolved external symbol "public: static class oracle::occi::Environment * __cdecl oracle::occi::Environment::createEnvironment(enum oracle::occi::Environment::Mode,void *,void * (__cdecl*)(void *,unsigned int),void * (
__cdecl*)(void *,void *,unsigned int),void (__cdecl*)(void *,void *))" (?createEnvironment@Environment@occi@oracle@@SAPAV123@W4Mode@ 123 @PAXP6APAX1I@ZP6APAX11I@ZP6AX11@Z@Z)
Debug/ 1 .exe : fatal error LNK1120:  2  unresolved externals
Error executing link.exe.
...
Рейтинг: 0 / 0
30.12.2005, 13:40
    #33465934
D_N_SL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VC++ и oracle
maksi_mа в чем может быть проблема ?
на такой код ругается:
OCCI нормально подключен???
Lib-ы прописаны?
h-ки оракловые?

Прописано?
Код: plaintext
1.
2.
#define WIN32COMMON
#include <occi.h>
using namespace oracle::occi;
...
Рейтинг: 0 / 0
30.12.2005, 14:21
    #33466029
kolobok0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VC++ и oracle
D_N_SL
OCCI нормально подключен???
Lib-ы прописаны?
h-ки оракловые?

Прописано?
Код: plaintext
1.
2.
#define WIN32COMMON
#include <occi.h>
using namespace oracle::occi;


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

Линковщику треба бинарные модули в которых будут иметься либо сами эти потроха (статические либы, обьектники), либо описание где их искать и откель подргужать (описание загружаемой DLL находящееся в формате Lib).
решаеться либо:
а) явным указанием путя и полного имени файла
б) включением путя к файлу в перечень путей, где линковщик ищет на автомате... При этом полное имя библиотеки, один фиг треба указать линковщику явно...

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


с уважением
(круглый)
...
Рейтинг: 0 / 0
31.12.2005, 00:00
    #33466469
D_N_SL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VC++ и oracle
kolobok0по русски же написано - линковщик не находит указанные обьявления... замечание про ашники посему - мимо, нэймспэйсы - мимо...Ваша правда - поспешил-указал сразу все(многие) траблы. Объял необъятное %)
...
Рейтинг: 0 / 0
24.08.2006, 12:36
    #33939847
AMeshkov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VC++ и oracle
Здравствуйте уважаемые.
Такая же проблема что и у maksi_m. Помогите чайнику разобраться с OCCI пожалуйста. Работаю под C+Builder и VS

Кидаю .h файлы OCCI в папку к остальным инклюдам.

если компилить данный код

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
      using namespace oracle::occi;
      using namespace std;

      Environment *env = Environment::createEnvironment(Environment::DEFAULT);
      Connection *conn = conn = env->createConnection("infotest", "infotest", "infotest");      
      Statement *stmt;
      ResultSet *rset;

try {

    stmt = conn->createStatement("select id, name from elent");
    rset = stmt->executeQuery();

    while(rset->next()) {
	cout << "name: " << rset->getString( 1 )
	    << "phone: " << rset->getString( 2 ) << endl;
    }

    stmt->closeResultSet(rset);
    conn->terminateStatement(stmt);

} 
catch(SQLException ex) {
    cout << "Error occured! Number: " << ex.getErrorCode() << endl;
    cout << ex.getMessage() << endl;

}

то выдает

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
[Linker Error] Unresolved external 'oracle::occi::SQLException::~SQLException()' 
[Linker Error] Unresolved external 'oracle::occi::ConstPtr<oracle::occi::SQLExceptionImpl>::~ConstPtr<oracle::occi::SQLExceptionImpl>()' 
[Linker Error] Unresolved external 'oracle::occi::SQLException::SQLException(const oracle::occi::SQLException&)' 
[Linker Error] Unresolved external 'oracle::occi::Environment::createEnvironment(oracle::occi::Environment::Mode, void *, void * (*)(void *, unsigned int), void * (*)(void *, void *, unsigned int), void (*)(void *, void *))' 
[Linker Error] Unresolved external 'oracle::occi::SQLException::getErrorCode() const' 
[Linker Error] Unresolved external 'oracle::occi::SQLException::getMessage() const' 

Как видно не хватает техже самых обьявлений.
Как это можно исправить и что нужно сделать?
...
Рейтинг: 0 / 0
24.08.2006, 16:04
    #33940752
kolobok0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VC++ и oracle
AMeshkov...Как видно не хватает техже самых обьявлений.
Как это можно исправить и что нужно сделать?

понимаете, создание программы складывается (как правило) из двух этапов... превращения вашеготекста программы в бинарные модули (этакие кусочки программы, они содержат код но ссылки между ними - нули..т.к. они не имеют у себя внутри всех имён, функция, классов и т.п.)..такие кусочки и называют объектниками...

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

нужно различать эти две фазы...не плохое слово разделяющее эти две фазы - LINKER (или link - не важно)...то, что было ДО него - это проблемы языка, объявлений и прочей мутотени...
что после него - ссылки между объектниками, библиотеками, условия компиляции...

у Вас - второе (как и у человека в примерах выше). Т.е. линковщик нифига не найдёт те имена (приведены в ругани) на которые существует ссылки в Вашем коде..Естественно если линковщику подсунуть модули где они содержаться - то проблема разрешиться... Т.е. если это внешняя либа - то нужно указать линковщику в include диррективе (тут лучше почитать на Ваш линковщик, либо среду - хэлп). Другими словами внимательно читаете от оракла инструкции как юзать оракл кол интерфейс, какой модуль нужно ПРИЛИНКОВАТЬ к Вашей программе чтоб Вы потянули его классы, перемнные и иже... После этого читаете инструкцию на Ваш линковщик (либо студию) и подсовываете ей путя с модулями от оракла...

вся любоффф
(круглый)
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / VC++ и oracle / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]