Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / empty_clob() vs DBMS_LOB.CREATETEMPORARY / 5 сообщений из 5, страница 1 из 1
10.10.2018, 21:41
    #39715810
ART-CODE
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
empty_clob() vs DBMS_LOB.CREATETEMPORARY
В пакете, в функции, которая должна вернуть CLOB
можно обьявить возвращаемый обьект либо так
RetCLB CLOB := empty_clob();
И далее работать с этим в цикле:
RetCLB:=RetCLB ||что-то добавили
и вернули return RetCLB ;

либо, обьявить RetCLB CLOB и создать при помощи
DBMS_LOB.CreateTemporary(RetCLB ...
и записывать туда через dbms_lob.writeappend

А как лучше и почему?
Или это одно и то же?

11g, если это важно.
Читал здесь , но вопрос еще остался.
...
Рейтинг: 0 / 0
10.10.2018, 23:59
    #39715856
Sayan Malakshinov
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
empty_clob() vs DBMS_LOB.CREATETEMPORARY
ART-CODE,

в общем случае сейчас не нужно делать ни первого, ни второго, ни третьего: достаточно задекларировать как clob и конкатенировать просто с помощью ||
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
SQL> create or replace function return_clob return clob as
  2    c clob;
  3  begin
  4    c:=rpad('x',4000,' ');
  5    c:=c||rpad(' ',4000,' ');
  6    c:=c||'z';
  7    return c;
  8  end;
  9  /
SQL>
SQL> select return_clob x from dual;

X
-----------------------------------------------------------
x




                                                                            
                                                                            
                                                                            
                                                                            
                                                                            
                                                                            
                                            z

...
Рейтинг: 0 / 0
11.10.2018, 16:23
    #39716238
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
empty_clob() vs DBMS_LOB.CREATETEMPORARY
xtenderсейчас не нужно Многоразовая конкатенация несколько дороже, чем многоразовый writeappend в единожды createtemporary.
...
Рейтинг: 0 / 0
11.10.2018, 16:50
    #39716263
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
empty_clob() vs DBMS_LOB.CREATETEMPORARY
Независимо от ценника на конкатенацию есть ценник на перенос из tmp в целевую таблицу.
Если лоб создается под хранение - лучше сразу туда и писать
...
Рейтинг: 0 / 0
12.10.2018, 20:42
    #39716913
ART-CODE
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
empty_clob() vs DBMS_LOB.CREATETEMPORARY
Спасибо всем за помощь.
andrey_anonymousлучше сразу туда и писать
Это значит переделать функцию на процедуру с параметром
IN OUT NOCOPY CLOB ?
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / empty_clob() vs DBMS_LOB.CREATETEMPORARY / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]