Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Informix [игнор отключен] [закрыт для гостей] / выборка из временной таблици внутри UDR / 9 сообщений из 9, страница 1 из 1
08.08.2007, 10:56
    #34713083
выборка из временной таблици внутри UDR
привет, подскажите пожалуйста, в чём ошибка и как следует делать правильно:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
create procedure some_proc()
create temp table tmp (id intefer, descr varchar( 16 )) with no log;
 -- some code
 insert into some_table (id, descr)
 select t.id, t.descr from tmp t;
 -- some code
end procedure

когда это выполняется не внутри UDR, всё работает отлично, когде же помещаем в ф-цию - вылетаем с ошибкой
INTO TEMP table required for SELECT statement
дело в том, что таблица some_table не является временной, это самая обычная таблица, в то время как, таблица tmp (из которой выбираем данные) является темповой... т.е. INTO TEMP означало бы обратное действие предполагаемому - из some_table в tmp, когда нужно наоборот (tmp->some_table)

подскажите как правильно это делать внутри тела UDR

Спасибо!
...
Рейтинг: 0 / 0
08.08.2007, 11:39
    #34713231
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выборка из временной таблици внутри UDR
что-то вы не договариваете, все должно работать:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
create table te111(a int);
Table created.

create procedure some_proc222()
create temp table tmp (a integer) with no log;
 insert into te111      (a )
 select t.a  from tmp t;
end procedure

Routine created.

execute procedure some_proc222();

Routine executed.

...
Рейтинг: 0 / 0
08.08.2007, 11:51
    #34713279
выборка из временной таблици внутри UDR
Журавлев Денисчто-то вы не договариваете, все должно работать:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
create procedure some_proc()
create temp table tmp (id intefer, descr varchar( 16 )) with no log;
 -- some code
 insert into some_table (id, descr)

 select t.id, 
(select another from some_table2 where ....)

from tmp t;
 -- some code
end procedure

...ну в оригинале ещё была вложенный подзапрос
это всё, остальные отличая только в наименовании столбцов и их количистве.
...
Рейтинг: 0 / 0
08.08.2007, 11:56
    #34713306
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выборка из временной таблици внутри UDR
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
create procedure some_proc223()
create temp table tmp (a integer) with no log;
insert into tmp values ( 1 );
 insert into te111 (a )
 select 
   (select tabid from systables where tabid= 99 )
 from tmp t;
end procedure

Routine created.

execute procedure some_proc223();

Routine executed.
...
Рейтинг: 0 / 0
08.08.2007, 11:56
    #34713308
olleg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выборка из временной таблици внутри UDR
Ошибка в
--some code ?

Потому что:
Ошибка -659
INTO TEMP table required for SELECT statement.

A SELECT statement did not specify where to put the returned values. SELECT statements within a procedure require either an INTO TEMP clause or an INTO clause that references the appropriate procedural variables.

Example of error:

CREATE PROCEDURE testproc()
...
SELECT col1, col2 FROM tab; -- error
END PROCEDURE

Correction:

CREATE PROCEDURE testproc()
...
SELECT col1, col2
INTO var1, var2
FROM tab;

SELECT col1, col2
FROM tab
INTO TEMP another_table;
END PROCEDURE
...
Рейтинг: 0 / 0
08.08.2007, 12:16
    #34713401
выборка из временной таблици внутри UDR
ollegОшибка в
--some code ?
...да, всё, всем спасибо. просто номер строки ошибки был именно тот, где производится выборка из временной таблицы.

прошу прощения, проблема действительно блин тривиальная... нельзя же ведь внутри хранимок просто selectы делать.

спасибо.
...
Рейтинг: 0 / 0
08.08.2007, 14:33
    #34714045
выборка из временной таблици внутри UDR
Ребята, и последнее, подскажите как правильно внутри не SPL кода присвоить значение некоторой переменной их ф-ции?
т.е. обчного SQL , который про define не знает...

execute function into подразумевает использование SPL переменной оюъявленной с помощью define, но это ключивае слово вне SPL не может использоваться.

Как выбрать результат выполнения некой ф-ции в простом SQL ?
...
Рейтинг: 0 / 0
08.08.2007, 14:42
    #34714089
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выборка из временной таблици внутри UDR
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
create procedure some_proc333() returning integer
return  5 ;
end procedure
 Routine created.


execute procedure some_proc333();
(expression) 
            5 
 1  row(s) retrieved.
Возвращается курсор, обычный запрос.
...
Рейтинг: 0 / 0
08.08.2007, 14:53
    #34714138
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
выборка из временной таблици внутри UDR
А еще так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
select * from table(multiset{some_proc333()});

unnamed_col_1 

             5 

 1  row(s) retrieved.
...
Рейтинг: 0 / 0
Форумы / Informix [игнор отключен] [закрыт для гостей] / выборка из временной таблици внутри UDR / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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