|
|
|
Проблема с bind - переменными
|
|||
|---|---|---|---|
|
#18+
Я написал прогу на Builder C++, которая формирует запросы в БД Oracle с использованием оператора SELECT. Мне сказали переделать её с использованием bind-переменных. Пишу: Vaiable a number; exec :a := 472; select * from TABLE1 where RG = :a; Скажите, это имелось в виду? :) Я новичок в SQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2007, 17:40 |
|
||
|
Проблема с bind - переменными
|
|||
|---|---|---|---|
|
#18+
Какие компоненты используются для доступа? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2007, 18:44 |
|
||
|
Проблема с bind - переменными
|
|||
|---|---|---|---|
|
#18+
Используй http://otl.sourceforge.net otl_stream ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2007, 11:19 |
|
||
|
Проблема с bind - переменными
|
|||
|---|---|---|---|
|
#18+
Для доступа использую компонент ADOQuery. Я знаю, что это не совсем подходящее решение, но переделывать программу - уже нет времени :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2007, 12:04 |
|
||
|
Проблема с bind - переменными
|
|||
|---|---|---|---|
|
#18+
а чем otl_stream, ловчее ADOQuery? и как его прекрутить к билдеру? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2007, 07:50 |
|
||
|
Проблема с bind - переменными
|
|||
|---|---|---|---|
|
#18+
OTL работает напрямую через OCI OTL - это просто wrapper над OCI + кроссплатформенность + интуитивно понятный интерфейс использования. Все, что требуется: otl_connect::otl_initialize(); otl_connect db; db.rlogon("user/passwd@sid",1/* thread mode*/); otl_stream s(1, "select a,b from TABLE1 where RG = :a<int,in>", db); // предположим, что выбираем a - number, b - varchar2 while (s.eof()) { int a; std::string b; s >> a >> b; } Прикрутить: попробуй просто подключить otlv4.h 1. Должен быть установлен Oracle Client 2. Добавь к путям поиска include: к примеру C:\oracle\ora92\oci\include 3. Добавь к путям поиска lib: к примеру C:\oracle\ora92\oci\lib\bc 4. Добавь в зависимость проекта oci.lib Дальше смотри на сайте если не заработает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2007, 16:35 |
|
||
|
Проблема с bind - переменными
|
|||
|---|---|---|---|
|
#18+
перед while (s.eof()) int i = 1; s << i; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2007, 18:15 |
|
||
|
Проблема с bind - переменными
|
|||
|---|---|---|---|
|
#18+
Я не пользуюсь билдером, но по старой дельфовой памяти (которой я, впрочем тоже не пользуюсь) - нужно копать в сторону ADOQuery.Parameters. Выглядеть это будет примерно так: ADOQuery q; q.sql = "select * from TABLE1 where RG = :a"; q.Parameters[0].DataType = ftInteger; q.Parameters[0].Value = 472; ... Переменные в оракле заявлять не нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 01:30 |
|
||
|
Проблема с bind - переменными
|
|||
|---|---|---|---|
|
#18+
Я делаю всё так (с помощью ADOQuery), но возникает ошибка, выдаваемая отладчиком Builder, что "параметр не найден" (Parameter not found). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 14:09 |
|
||
|
Проблема с bind - переменными
|
|||
|---|---|---|---|
|
#18+
Google: "ADOQuery.Parameters Parameter not found'. Из первых: http://www.sql.ru/forum/actualthread.aspx?tid=336791 http://www.delphi32.com/info_facts/faq/faq_932.asp ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2007, 22:13 |
|
||
|
Проблема с bind - переменными
|
|||
|---|---|---|---|
|
#18+
Всё равно не работает :( Когда я пишу: ADOQuery1->Parameters->ParseSQL(ADOQuery1->SQL->Text,true); Ssql = “Select * from Tbl where RG = :pRG”; ADOQuery1->Parameters->ParamByName("pRG")->Value = 1; ADOQuery1->SQL->Clear(); ADOQuery1->SQL->Add(ssql); ADOQuery1->Open(); На этапе Value = 1 пишет «Parameter ‘pRG’ not found» Когда пишу: ADOQuery1->Parameters->ParseSQL(ADOQuery1->SQL->Text,true); ADOQuery1->Parameters->AddParameter(); ADOQuery1->Parameters->Items[0]->Name = "pRG"; Ssql = “Select * from Tbl where RG = :pRG”; ADOQuery1->Parameters->ParamByName("pRG")->Value = 1; ADOQuery1->SQL->Clear(); ADOQuery1->SQL->Add(ssql); ADOQuery1->Open(); На этапе Open() выдаётся сообщение «Неправильно определён объект Parameter. Предоставлены несовместимые или неполные сведения» ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2007, 11:59 |
|
||
|
Проблема с bind - переменными
|
|||
|---|---|---|---|
|
#18+
BiosiВсё равно не работает :( А вариант с ADOQuery1->Parameters->Refresh; вместо ADOQuery1->Parameters->ParseSQL(ADOQuery1->SQL->Text,true); тоже не работает? Во втором случае проблема, возможноЮ в неопределенном типе параметра? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2007, 15:39 |
|
||
|
|

start [/forum/topic.php?fid=57&gotonew=1&tid=2028255]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
183ms |
get topic data: |
9ms |
get first new msg: |
8ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
| others: | 216ms |
| total: | 508ms |

| 0 / 0 |
