Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Oracle |
![]() ![]() |
Miner_Mira Member Откуда: Сообщений: 7 |
Есть БД ORACLE Есть в ней таблица с фотографиями, тип данных BLOB. Некоторые фото плохого качества. Необходимо заменить эти фото. Отличительная особенность фото плохого качества - это малый размер данных в столбце FOTO, тип данных BLOB (к примеру данные занимают менее 5 килоБайт). Задача = найти строки в таблице с фотографиями, где данные в столбце FOTO занимают менее 5 килоБайт. |
3 окт 18, 19:38 [21694526] Ответить | Цитировать Сообщить модератору |
SY Member Откуда: Middlebury, CT USA Сообщений: 9340 |
A что LENGTH уже отменили? SY. |
3 окт 18, 19:42 [21694528] Ответить | Цитировать Сообщить модератору |
Elic Member Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ Сообщений: 28673 |
|
||
4 окт 18, 08:07 [21694771] Ответить | Цитировать Сообщить модератору |
maverick2104 Member Откуда: Сообщений: 266 |
dbms_lob.getlength |
4 окт 18, 08:32 [21694782] Ответить | Цитировать Сообщить модератору |
Miner_Mira Member Откуда: Сообщений: 7 |
maverick2104, SELECT DBMS_LOB.GETLENGTH(foto) FROM fotes where id=47 ORA-00997: неверное использование типа данных LONG что делать? |
7 окт 18, 14:58 [21697361] Ответить | Цитировать Сообщить модератору |
dmdmdm Member Откуда: Нижний Новгород Сообщений: 1142 |
Для начала выдать нормальный test case.
|
|||
7 окт 18, 15:49 [21697373] Ответить | Цитировать Сообщить модератору |
SY Member Откуда: Middlebury, CT USA Сообщений: 9340 |
Доверяй, но проверяй: SQL> create table tbl(b blob) 2 / Table created. SQL> declare 2 v_blob blob := utl_raw.cast_to_raw(lpad('9',1000,'9')); 3 begin 4 for v_i in 1..20 loop 5 dbms_lob.append(v_blob,v_blob); 6 end loop; 7 insert into tbl values(v_blob); 8 end; 9 / PL/SQL procedure successfully completed. SQL> select length(b) length_b, 2 dbms_lob.getlength(b) getlength_b 3 from tbl 4 / LENGTH_B GETLENGTH_B ---------- ----------- 1048576000 1048576000 SQL> SY. |
||
7 окт 18, 16:11 [21697381] Ответить | Цитировать Сообщить модератору |
SY Member Откуда: Middlebury, CT USA Сообщений: 9340 |
Медитировать на тему LONG vs BLOB. И читать доку: LONG The LONG datatype stores character strings longer than 4000 bytes. You can store up to two gigabytes (2^31-1 bytes) in a LONG column. Columns of this type are used only for storage and retrieval of long strings. They cannot be used in functions, expressions, or WHERE clauses. LONG column values are generally converted to and from character strings. Do not create tables with LONG columns. Use LOB columns (CLOB, NCLOB, or BLOB) instead. LONG columns are supported only for backward compatibility. Oracle also recommends that you convert existing LONG columns to LOB columns. LOB columns are subject to far fewer restrictions than LONG columns. Furthermore, LOB functionality is enhanced in every release, but LONG functionality has been static for several releases. SY. |
||
7 окт 18, 16:20 [21697384] Ответить | Цитировать Сообщить модератору |
Elic Member Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ Сообщений: 28673 |
|
||
8 окт 18, 07:56 [21697676] Ответить | Цитировать Сообщить модератору |
Miner_Mira Member Откуда: Сообщений: 7 |
Тип данных таблицы фото TOAD отображает по разному, как BLOB и как LONG. К сообщению приложен файл. Размер - 32Kb |
9 окт 18, 22:07 [21699802] Ответить | Цитировать Сообщить модератору |
Miner_Mira Member Откуда: Сообщений: 7 |
К сообщению приложен файл. Размер - 32Kb |
9 окт 18, 22:10 [21699809] Ответить | Цитировать Сообщить модератору |
Miner_Mira Member Откуда: Сообщений: 7 |
К сообщению приложен файл. Размер - 30Kb |
9 окт 18, 22:11 [21699812] Ответить | Цитировать Сообщить модератору |
Miner_Mira Member Откуда: Сообщений: 7 |
Извиняюсь две первых одинаковые BLOB залил. Но тот же TOAD может посчитать размер этих данных без проблем Неужели нет метода в SQL, который так же просто мог считать размер данных как TOAD ? К сообщению приложен файл. Размер - 11Kb |
9 окт 18, 22:12 [21699813] Ответить | Цитировать Сообщить модератору |
Miner_Mira Member Откуда: Сообщений: 7 |
ситуация прежняя SELECT DBMS_LOB.GETLENGTH(IMAGE) FROM IMAGES where pid=.... ORA-00997: неверное использование типа данных LONG |
9 окт 18, 22:15 [21699818] Ответить | Цитировать Сообщить модератору |
Elic Member Откуда: 1984. Выбраковка финно-угром продолжается. КЯЗ Сообщений: 28673 |
|
||
10 окт 18, 07:39 [21700020] Ответить | Цитировать Сообщить модератору |
andrey_anonymous Member Откуда: Москва Сообщений: 17091 |
Нет. Ваши данные лежат в LONG RAW. Этот "недотип" не поддерживается в PL/SQL, только OCI и, емнип, JDBC. |
||
10 окт 18, 11:05 [21700176] Ответить | Цитировать Сообщить модератору |
-2- Member Откуда: Сообщений: 14345 |
|
||
10 окт 18, 11:19 [21700195] Ответить | Цитировать Сообщить модератору |
orawish Member Откуда: Гадюкино-2 (City) Сообщений: 15440 |
завязывать с пыльными недо_типами to_lob |
||
10 окт 18, 15:06 [21700594] Ответить | Цитировать Сообщить модератору |
andreymx Member Откуда: Запорожье Сообщений: 49816 |
тип оказался LONG RAW |
||||
10 окт 18, 19:43 [21700953] Ответить | Цитировать Сообщить модератору |
Все форумы / Oracle | ![]() |