Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Oracle > Memo из dbf в varchar2 с помощью HS


Автор: tvik 6.3.2007, 09:31
Пожалуйста подскажите: как написать запрос, чтобы он выполнился без ошибки:
Код
select  "a1" from fond@dbl_vpf.tbd;

а1 - поле типа memo в dbf-таблице
dbl_vpf.tbd - линк, который "смотрит" на dbf файл. Настроен с помощью HS Oracle

Как получить данные из memo и положить их в поле varchar2  Oracle

Автор: LSD 6.3.2007, 12:32
Memo может иметь размер значительно больше чем varchar2, надо использовать blob или clob.

Запрос:
Код
select  * from fond@dbl_vpf.tbd

отрабатывает нормально?

Автор: tvik 6.3.2007, 13:10
1)Спасибо, я это знаю, но мне нужно это вставить в поле varchar2(можно и обрезать memo, но как???)
2) Запрос этот не работает, ошибка
ORA-28500...........this message: Statement too long
Как это обойте -не знаю smile 

Автор: DimW 6.3.2007, 13:20
Цитата(tvik @  6.3.2007,  13:10 Найти цитируемый пост)
ORA-28500

гы - гы, подозрительный номер ошибки...
не сам ты случайно ее вызываешь?

Автор: tvik 6.3.2007, 13:24
и еще если написать такой select в курсоре процедуры, то
Oracle выдает ошибку: table does not exist
смена регистра и двойные кавычки не помогают  smile 

Автор: DimW 6.3.2007, 13:28
вобшем почему я обратил внимание на номер ошибки, потому что думал что ты ее сам рейзишь т.к. номер ошибки переваливает за 20000.
потом в гугле посмотрел ошибка с таким номером писутствует во многих линках в контексте dblink-ов.  точнее их не правельной организации.
так что не запрос виноват видимо, а dblink криво настроен...

Добавлено @ 13:37 
вот твои ошибки и скудные рекомендации по их устранению.
Цитата

ORA-28500: connection from ORACLE to a non-Oracle system returned this message: [Transparent gateway for ODBC][H001] The environment variable <HS_FDS_CONNECT_INFO> is not set.
ORA-02063: preceding 2 lines from HS
Cause: Incorrect parameter settings in the HS init.ora file.
Action: Set HS_FDS_CONNECT_INFO in the HS init.ora file to the data source name located in the odbc.ini file.
Example: HS_FDS_CONNECT_INFO = MS_SQLServer Wire Protocol Make sure the HS init.ora file exists in the $ORACLE_HOME/hs/admin directory and has the same name as the SID in the LISTENER.ORA.
Example: If SID=hsodbc in the listener.ora file, then the HS init.ora file would be named $ORACLE_HOME/hs/admin/inithsodbc.ora 

ORA-28500: connection from ORACLE to a non-Oracle system returned this message: [Transparent gateway for ODBC][H001] The environment variable <HS_FDS_SHAREABLE_NAME> is not set.
ORA-02063: preceding 2 lines from HS
Cause: Incorrect parameter settings in the HS init.ora file.
Action: Set HS_FDS_SHAREABLE_NAME to the full path plus filename to the libodbc.so file.
Example: HS_FDS_SHAREABLE_NAME=/opt/odbc/lib/libodbc.so 

ORA-28500: connection from ORACLE to a non-Oracle system returned this message: [Transparent gateway for ODBC]DRV_InitTdp:
(SQL State: 01000; SQL Code: 0)
ORA-02063: preceding 2 lines from HS
Cause: The HS agent cannot find the odbc.ini file.
Action: The ODBCINI variable is not set in the HS init.ora file and needs to be set.
Example: set ODBCINI=/opt/odbc/odbc.ini 


полный список ошибок oracle + odbc http://www.datadirect.com/developer/odbc/oracle_heterogeneous/index.ssp

Автор: tvik 6.3.2007, 13:53
Но здесь сообщение 
The environment variable <HS_FDS_CONNECT_INFO> is not set.

а у меня 
 Statement too long

а запрос с типом number из этой же таблицы работает

Автор: DimW 6.3.2007, 14:24
вот так попробуй:

Код

select  cast (a1 as varchar2(20))  
from fond@dbl_vpf.tbd;
 

вро ди как должно преобразовать...
по крайней мере у меня clob преобразовывается в varchar2(20), но не через dblink...

Автор: tvik 6.3.2007, 14:56

Вот-вот link и не работает
к сожелению так уже пробовалось,но изменилась только ошибка

ORA-02070 - database dbl_vpf does not support in this context.
Используемые средства
пишу в plsql developer, Oracle 9, visual foxpro 5

Что-то особо ничего и в голову не приходит, что делать smile 

Автор: DimW 6.3.2007, 15:20
tvik, у тебя вобще cost работает в этом контексте? то есть если не через dblink, а в plsql developer к оракловой таблице обратиться таким селектом.
и версию оракла поточней укажи.

Автор: tvik 7.3.2007, 06:25
Oracle 9.2.0.1.0

В Developer-ой  табллице работает только с clob, а с long  в этой же таблице- нет!!!!!!!!!!!

Помогите!!! Что шлюз некорректно работает??? Или что!!!

Автор: tvik 7.3.2007, 08:15
Подскажите пож., что делать???
Почему запрос, который работает в SQL-window и  Command-Window 
не работает внутри процедуры????
Error: Table does not exist

select  "fkod" from fond@dbl_vpf.tbd; smile(

Автор: DimW 7.3.2007, 09:18
Цитата(tvik @  7.3.2007,  08:15 Найти цитируемый пост)
Почему запрос, который работает в SQL-window и  Command-Window 
не работает внутри процедуры????

дело в том что sql и pl/sql это разные движки, которые разробатываются параллельно, но иногда pl/sql движок отстает от движка sql. возможно pl/sql не знает что обьект fond@dbl_vpf.tbd живет в дб линке.
думаю это легко вылечится так:
создай представление на основе своего селекта
Код

create or replace view dbl_vpf as
  select  "fkod" from fond@dbl_vpf.tbd
 
и в процедуре обращайся к представлению.


Автор: tvik 7.3.2007, 12:03
Во-первых селект не работает с таблицами, в которых есть мемо поля
Во-вторых, например, dbf таблица содержит 2 мемо поля, я бы в первым селектом выбрала одино поле, вторым - второе, а
так 2 view создавить чтоли

А что ты можешь сказать насчет SQL*loader как он long обрабатывает???
Может мне им воспользоваться или как с лонгами быть???

Автор: LSD 7.3.2007, 12:08
Цитата(tvik @  7.3.2007,  08:15 Найти цитируемый пост)
Почему запрос, который работает в SQL-window и  Command-Window не работает внутри процедуры????

От имени какого пользователя выполняется процедура? Тот же самый которому принадлежит db link?

Автор: tvik 7.3.2007, 13:20
Короче, знаете в чем вся фигня, как мне кажется,
это то, что в таблице есть поля типа long, а Oracle 9 не хочет с ними работать!!
нужно придумать как из long сделать varchar2???
через шлюз или как-то еще выпендрится!?!?!?!?!?!?!?!

 

Автор: DimW 7.3.2007, 16:07
Цитата(tvik @  7.3.2007,  13:20 Найти цитируемый пост)
нужно придумать как из long сделать varchar2???

то лонг то мемо, я что то не вкуриваю...?  smile 

и к стати - tvik,  с наступающим!  smile 

Автор: tvik 16.3.2007, 10:26
Всем спасибо за помощь, пришла к выводу, что буду грузить  dbf-ки SQLLoader, но это уже другая тема

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)