Создайте временную ТАБЛИЦУ внутри ФУНКЦИИ

Как я могу создать временную таблицу, которую я могу вернуть при вызове функции?


person michelle.ann.diaz    schedule 12.02.2013    source источник
comment
Прочтите о динамическом SQL: docs.oracle.com/ cd/E11882_01/appdev.112/e25519/   -  person a_horse_with_no_name    schedule 12.02.2013
comment
@user2001117: см. теги   -  person a_horse_with_no_name    schedule 12.02.2013
comment
Временные таблицы в Oracle не должны (должны) создаваться на лету; они являются постоянными объектами с данными, специфичными для сеанса, а не чем-то, что вы можете передать или вернуть. См. это и это, чтобы узнать больше.   -  person Alex Poole    schedule 12.02.2013
comment
Это способ работы с MS T-SQL. Временные таблицы в Oracle отличаются; чтобы понять больше, см. мой ответ на очень похожий вопрос здесь stackoverflow.com/a/1193443/146325   -  person APC    schedule 12.02.2013
comment
Я не уверен, насколько полезен этот вопрос без дополнительной информации. В чем смысл этой временной таблицы? Чего именно вы пытаетесь достичь? Это глобальная временная таблица или вы пытаетесь создать «табличный» вывод, в котором вы пытаетесь получить конвейерную функцию или курсор ссылки?   -  person Mike Meyers    schedule 12.02.2013


Ответы (1)


Смотрите этот:

create or replace procedure maketemptab 
    is 
    sqlstmt varchar2(500); 
    begin 
    sqlstmt := 'CREATE GLOBAL TEMPORARY TABLE(col1 varchar2(10))'; 
    execute immediate sqlstmt; 
    end;
person user2001117    schedule 12.02.2013
comment
Это не создаст временную таблицу. - person a_horse_with_no_name; 12.02.2013
comment
Мало того, что он не создаст таблицу (есть ошибка sybtax), создание временных таблиц таким образом идиоматически неправильно для Oracle. - person APC; 12.02.2013