Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.02.13;
Скачать: CL | DM;

Вниз

Сохранение файла-документа в таблице Oracle v8   Найти похожие ветки 

 
VS2002   (2003-01-29 03:13) [0]

Необходимо сохранять содержимое файла (Word, Excel и т.д.) в таблице Oracle v8. В документации по Oracle приводятся разные типы данных, позволяющие сделать это: BLOB, RAW, LONG RAW.
Вопрос:
1. В чем принципиальное отличие в использовании этих типов данных?
2. Как сохранить/извлечь данные из данных полей?


 
AlexVit ©   (2003-01-29 08:01) [1]

Вот выдержки из Руководства пользователя по PL/SQL для Oracle:
LONG
----

Вы используете тип данных LONG для хранения символьных строк
переменной длины. Тип данных LONG подобен типу данных VARCHAR2,
с тем отличием, что максимальная длина значения LONG составляет
32760 байт.

Вы можете вставлять любое значение LONG в столбец базы данных
LONG, ибо максимальная ширина столбца LONG составляет 2147483647
байт. Однако вы не можете выбирать значение длиннее 32760 байт
из столбца LONG в переменную LONG.

Столбцы LONG могут хранить текст, массивы символов, или даже
небольшие документы. Вы можете обращаться к столбцам LONG в
предложениях UPDATE, INSERT и большинстве предложений SELECT, но
НЕ в выражениях, вызовах функций или некоторых фразах SQL, таких
как WHERE, GROPU BY и CONNECT BY. Для дополнительной информации
обратитесь к документу ORACLE7 Server SQL Language Reference
Manual.

RAW
---

Вы используете тип данных RAW для хранения двоичных данных или
байтовых строк. Например, в переменной RAW можно было бы
хранить последовательность графических символов или оцифрованное
изображение. Данные RAW напоминают символьные данные, с той
разницей, что PL/SQL не интерпретирует данных RAW. Аналогично,
ORACLE не выполняет никаких преобразований кодового множества,
когда вы передаете данные RAW из одной системы в другую.

Тип данных RAW принимает обязательный параметр, который
позволяет вам специфицировать максимальную длину (вплоть до
32767 байт). Синтаксис имеет следующий вид:

RAW(максимальная_длина)

Для спецификации максимальной длины нельзя использовать
константу или переменную; вы должны использовать целочисленный
литерал.

Хотя максимальная длина переменной RAW составляет 32767 байт,
максимальная ширина столбца базы данных типа RAW равна 255 байт.
Поэтому вы не можете вставлять в столбец RAW значения длиннее
255 байт. Вы можете вставлять значения RAW в столбец базы
данных LONG RAW, ибо максимальная ширина столбца LONG RAW
составляет 2147483647 байт. Однако вы не можете выбирать
значение длиннее 32767 байт из столбца LONG RAW в переменную
RAW.













2-14 Руководство пользователя и справочник по PL/SQL


LONG RAW
--------

Вы используете тип данных LONG RAW для хранения двоичных данных
или байтовых строк. Тип данных LONG RAW подобен типу данных
LONG, с тем отличием, что данные LONG RAW не интерпретируются
PL/SQL. Максимальная длина значения LONG RAW составляет 32760
байт.

Вы можете вставлять любое значение LONG RAW в столбец базы
данных LONG RAW, ибо максимальная ширина столбца LONG RAW
составляет 2147483647 байт. Однако вы не можете выбирать
значение длиннее 32760 байт из столбца LONG RAW в переменную
LONG RAW.


 
roottim   (2003-01-29 08:23) [2]

word,exel - в BLOB


 
danilka   (2003-01-29 08:42) [3]

я делаю что-то типа:
Stream := TFileStream.Create("xxx.exe",fmOpenRead);
updateQuery.SQL.Add("update TABLE_NAME set BLOB_FIELD_NAME = empty_blob() where FILE_NAME = "#39"xxx.exe"#39);
updateQuery.SQL.Add("returning BLOB_FIELD_NAME into :fp");
updateQuery.ParamByName("fp").LoadFromStream(Stream, ftOraBlob);
updateQuery.ExecSQL;

TABLE_NAME - имя таблицы
BLOB_FIELD_NAME - имя блоб-поля, где лежат данные
условие where должно возвращать только одну запись.
На вьюхах не проходит :))

Может можно и проще, но меня и так устраивает.


 
danilka   (2003-01-29 08:44) [4]

да, и еще, если работаешь через бде, то надо в алиасе "blob size" сделать больше чем файл который будешь писать в базу (в килобайтах) :)



Страницы: 1 вся ветка

Текущий архив: 2003.02.13;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.019 c
3-38137
Vad
2003-01-25 17:49
2003.02.13
IB DEFAULT CHARACTER SET


14-38480
OlProgrammer
2003-01-23 14:58
2003.02.13
Update fo Delphi 7


1-38250
amihe
2003-02-04 21:25
2003.02.13
Как создать ActiveX из не TwinControl потомков?


4-38658
virginkiller
2002-12-29 23:18
2003.02.13
MDI Child + Menu


14-38442
VictorT
2003-01-30 12:23
2003.02.13
О броузерах