Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.02.13;
Скачать: [xml.tar.bz2];

Вниз

Сохранение файла-документа в таблице 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.015 c
1-38337
Armageddon
2003-02-03 18:40
2003.02.13
Как програмно задать шрифт в RichEdit.


3-38113
Behemoth
2003-01-28 11:45
2003.02.13
Как получить список всех псевдонимов (Aliase) на моей машине?


1-38166
Ivit
2003-02-04 12:51
2003.02.13
Парсинг ФИО из именительного в родительный падеж


3-38075
Larisa
2003-01-25 15:08
2003.02.13
Запросы на запись и изменение данных производятся очень медлен-,


1-38234
Smithson
2003-02-05 12:19
2003.02.13
Динамический массив





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский