Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
просмотр данных во временной табл
|
|||
|---|---|---|---|
|
#18+
Создаю таблицу DECLARE GLOBAL TEMPORARY TABLE session.res5 (Наимен_страны varchar(500),Ед_измp varchar(5),Количество decimal,Ст_тыс_долл_США decimal) забиваю данные insert into session.res5 (Наимен_страны ,Количество ,Ст_тыс_долл_США) (select 'СССР', 52, 50) from temp2 where char(g33a,4)='8703'); просматриваю select * from session.res5 0 записей выбрано. Можно ли вообще просмотреть результат !? если можно то как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2007, 09:09 |
|
||
|
просмотр данных во временной табл
|
|||
|---|---|---|---|
|
#18+
Я обычно создаю временную таблицу с опциями on commit preserve rows not logged Ни разу не было проблем с чтением ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2007, 09:11 |
|
||
|
просмотр данных во временной табл
|
|||
|---|---|---|---|
|
#18+
Спасибо все получилось! хорошая штука 'on commit preserve rows not logged' а где можно поподробнее почитать.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2007, 09:34 |
|
||
|
просмотр данных во временной табл
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2007, 11:05 |
|
||
|
просмотр данных во временной табл
|
|||
|---|---|---|---|
|
#18+
По-хорошему надо бы autocommit выключить, а не preserve rows. update command options using c off; declare .... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2007, 18:52 |
|
||
|
просмотр данных во временной табл
|
|||
|---|---|---|---|
|
#18+
По-хорошему вопрос был про одну таблицу....Нужно ли конфигурить всю БД ради нее одной? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2007, 20:47 |
|
||
|
просмотр данных во временной табл
|
|||
|---|---|---|---|
|
#18+
Действительно, нужно ли? "update command options" - это для командного процессора, если че. А вовсе не для "всю БД ради нее одной". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2007, 21:25 |
|
||
|
просмотр данных во временной табл
|
|||
|---|---|---|---|
|
#18+
Как правильно использовать update command options using c off;? если я делаю так update command options using c off; DECLARE GLOBAL TEMPORARY TABLE session.res5 (Наимен_страны varchar(500),Ед_измp varchar(5),Количество decimal,Ст_тыс_долл_США decimal); insert into session.res5 values ('СССР','КГ',20,50); select * from session.res5 то результат 0 записей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2007, 07:07 |
|
||
|
просмотр данных во временной табл
|
|||
|---|---|---|---|
|
#18+
Мне показалось, что человек интересовался этим вопросом не в целях работы с CLP....) Может просто показалось.... P.S. Вот чего думаю.... А есть подобные опции на БД? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2007, 09:05 |
|
||
|
просмотр данных во временной табл
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.01.2007, 14:17 |
|
||
|
просмотр данных во временной табл
|
|||
|---|---|---|---|
|
#18+
Доступно объяснил :)) спс! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2007, 07:25 |
|
||
|
просмотр данных во временной табл
|
|||
|---|---|---|---|
|
#18+
Еще такой вопрос: как работать с этой таблицей в цикле так не получется create procedure temp2(in dat date,in data date) result set 1 language sql begin declare vr_sum decimal(15,2); declare vr_g33a char(4); declare vr_summa decimal(15,2); declare vr_count smallint; declare myCursor1 cursor with return for select char(g33a,4), sum(g46) from t_st2006 where g01a='ИМ' and g54d between dat and data group by char(g33a,4) order by char(g33a,4); declare myCursor cursor with return for s1; declare global temporary table session.temp2(наимен_страны varchar(50) ,Количество decimal,Ст_тыс_долл_США decimal) update command options using c off или --on commit preserve rows not logged; select count(distinct char(g33a,4)) into vr_count from t_st2006 where char(g33a,4)=any(select char(g33a,4) from t_st2006 where g01a='ИМ' and g54d between dat and data group by char(g33a,4)); select sum(g46) into vr_summa from t_st2006 where g01a='ИМ' and g54d between dat and data; set vr_summa=(vr_summa*5)/100; open myCursor1; while vr_count<>0 do set vr_count=vr_count-1; fetch myCursor1 into vr_g33a, vr_sum; if vr_sum>=vr_summa then insert into session.temp2 select g01a, g33a, g15_17, s15_17, g41, g31b, g46, g54d from t_st2006 where char (g33a, 4)=vr_g33a and g54d between dat and data and g01a='ИМ'; end if; end while; close myCursor1; open myCursor; open myCursor1; end @ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2007, 10:11 |
|
||
|
просмотр данных во временной табл
|
|||
|---|---|---|---|
|
#18+
У вас тут каша. Непонятно, что вы вернуть из процедуры хотите? Куча ошибок: 1. Объявлен 1 возвращаемый result set и 2 курсора в конце открываются. 2. update command options - не нужно (да и работать не будет). 3. session.temp2 объявляется с 3-мя полями, а insert в нее идет с 8-ю. 4. Объявлен курсор myCursor на statement s1, но нет нигде prepare s1 from ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2007, 12:10 |
|
||
|
просмотр данных во временной табл
|
|||
|---|---|---|---|
|
#18+
update command options using c off - это команда СLP а не SQL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2007, 12:34 |
|
||
|
просмотр данных во временной табл
|
|||
|---|---|---|---|
|
#18+
я и не говорил что это правильный пример 3. session.temp2 объявляется с 3-мя полями, а insert в нее идет с 8-ю. меня только интересует времянка так примерно..? create procedure temp2(in dat date,in data date) result set 1 language sql begin declare vr_sum decimal(15,2); declare vr_g33a char(4); declare vr_summa decimal(15,2); declare vr_count smallint; declare SQL_CMD varchar(200); declare myCursor1 cursor with return for select char(g33a,4), sum(g46) from t_st2006 where g01a='ИМ' and g54d between dat and data group by char(g33a,4) order by char(g33a,4); declare myCursor cursor with return for s1; declare global temporary table session.temp2(наимен_страны varchar(50) ,Количество decimal,Ст_тыс_долл_США decimal) on commit preserve rows not logged; set SQL_CMD='select * from session.temp2'; prepare s1 from SQL_CMD; select count(distinct char(g33a,4)) into vr_count from t_st2006 where char(g33a,4)=any(select char(g33a,4) from t_st2006 where g01a='ИМ' and g54d between dat and data group by char(g33a,4)); select sum(g46) into vr_summa from t_st2006 where g01a='ИМ' and g54d between dat and data; set vr_summa=(vr_summa*5)/100; open myCursor1; while vr_count<>0 do set vr_count=vr_count-1; fetch myCursor1 into vr_g33a, vr_sum; if vr_sum>=vr_summa then insert into session.temp2 select g01a, g33a, g15_17, s15_17, g41, g31b, g46, g54d from t_st2006 where char(g33a, 4)=vr_g33a and g54d between dat and data and g01a='ИМ'; end if; end while; close myCursor1; open myCursor; end @ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2007, 14:14 |
|
||
|
просмотр данных во временной табл
|
|||
|---|---|---|---|
|
#18+
вот готовый скрипт create procedure temp2(in dat date,in data date) result set 1 language sql begin declare vr_sum decimal(15,2); declare vr_g33a char(4); declare vr_summa decimal(15,2); declare vr_count smallint; declare SQL_CMD varchar(100); declare myCursor1 cursor with return for select char(g33a,4), sum(g46) from t_st2006 where g01a='ИМ' and g54d between dat and data group by char(g33a,4) order by char(g33a,4); declare myCursor cursor with return for s1; declare global temporary table session.temp2(g01a varchar(4), g33a varchar(9), g15_17 varchar(3), s15_17 varchar(3), g41 varchar(3), g31b integer, g46 decimal(15,2), g54d date) on commit preserve rows not logged; set SQL_CMD='select * from session.temp2'; prepare s1 from SQL_CMD; select count(distinct char(g33a,4)) into vr_count from t_st2006 where char(g33a,4)=any(select char(g33a,4) from t_st2006 where g01a='ИМ' and g54d between dat and data group by char(g33a,4)); select sum(g46) into vr_summa from t_st2006 where g01a='ИМ' and g54d between dat and data; set vr_summa=(vr_summa*5)/100; open myCursor1; while vr_count<>0 do set vr_count=vr_count-1; fetch myCursor1 into vr_g33a, vr_sum; if vr_sum>=vr_summa then insert into session.temp2 select g01a, g33a, g15_17, s15_17, g41, g31b, g46, g54d from t_st2006 where char (g33a, 4)=vr_g33a and g54d between dat and data and g01a='ИМ'; end if; end while; close myCursor1; open myCursor; end @ только он ругается на SQL0601N Имя создаваемого объекта идентично существующему имени "SESSION.TEMP2" типа "DECLARED TEMPORARY TABLE". SQLSTATE=42710 если делаешь так drop table session.temp2 то пишет SQL0204N Имя "SESSION.TEMP2" не было определено. SQLSTATE=42704 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2007, 14:32 |
|
||
|
просмотр данных во временной табл
|
|||
|---|---|---|---|
|
#18+
Внутри процедуры делайте (ну, и перед компиляцией процедуры тоже) declare global temporary table session.temp2(g01a varchar(4), g33a varchar(9), g15_17 varchar(3), s15_17 varchar(3), g41 varchar(3), g31b integer, g46 decimal(15,2), g54d date) with replace ; А вообще, по-моему нижеследующий селект возвратит то, что вы делаете в процедуре: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2007, 15:32 |
|
||
|
просмотр данных во временной табл
|
|||
|---|---|---|---|
|
#18+
еще вопрос: имеется др процедура res2 в которой нужно вызвать процедуру temp2 create procedure res2() result set 1 language sql begin declare vr_per decimal; declare vr_g33a_4 varchar(4); declare vr_groupkod integer; declare vr_count_countrygroup integer; declare vr_coun_country integer; declare vr_count_4 integer; declare vr_count integer; call temp2('2006-01-01','2006-12-31');.... SQL0204N Имя "SESSION.TEMP2" не было определено. LINE NUMBER=13. SQLSTATE=42704 хотя она создана db2 => call temp2('2006-01-01','2006-12-31') Набор результатов 1 -------------- G01A G33A G15_17 S15_17 G41 G31B G46 G54D ---- --------- ------ ------ --- ----------- ----------------- ---------- ИМ 841122110 643 643 796 9 306,00 ИМ 860630000 804 804 796 14 476,00 ИМ 870322909 784 784 796 1 10,93 ИМ 870323192 643 643 796 10 99,40 ИМ 870324109 276 784 796 1 41,00 ИМ 870324109 276 784 796 1 28,00 ИМ 870323192 250 784 796 1 10,00 в скрипте процедуры temp2 поменял declare global temporary table session.temp2(g01a varchar(4), g33a varchar(9), g15_17 varchar(3), s15_17 varchar(3), g41 varchar(3), g31b integer, g46 decimal(15,2), g54d date) with replace; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2007, 10:05 |
|
||
|
просмотр данных во временной табл
|
|||
|---|---|---|---|
|
#18+
Такого не должно быть. Вот пример: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Обе будут работать без ошибок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2007, 10:42 |
|
||
|
просмотр данных во временной табл
|
|||
|---|---|---|---|
|
#18+
не пойму почему у меня не получается... если делаешь так : declare global temporary table session.temp3 (id integer, g01a varchar(4), g33a varchar(9), g15_17 varchar(3), s15_17 varchar(3), g41 varchar(3), g31b integer, g46 decimal(15,2), g54d date) with replace@ create procedure temp3(in dat date,in data date) result set 1 language sql begin declare vr_sum decimal(15,2); declare vr_g33a char(4); declare vr_summa decimal(15,2); declare vr_count smallint; declare SQL_CMD varchar(100); declare myCursor1 cursor with return for select char(g33a,4), sum(g46) from t_st2006 where g01a='ИМ' and g54d between dat and data group by char(g33a,4) order by char(g33a,4); declare myCursor cursor with return for s1; declare global temporary table session.temp3(g01a varchar(4), g33a varchar(9), g15_17 varchar(3), s15_17 varchar(3), g41 varchar(3), g31b integer, g46 decimal(15,2), g54d date) with replace; select count(distinct char(g33a,4)) into vr_count from t_st2006 where char(g33a,4)=any(select char(g33a,4) from t_st2006 where g01a='ИМ' and g54d between dat and data group by char(g33a,4)); select sum(g46) into vr_summa from t_st2006 where g01a='ИМ' and g54d between dat and data; set vr_summa=(vr_summa*5)/100; open myCursor1; while vr_count<>0 do set vr_count=vr_count-1; fetch myCursor1 into vr_g33a, vr_sum; if vr_sum>=vr_summa then insert into session.temp3(g01a, g33a, g15_17, s15_17, g41, g31b, g46, g54d) select g01a, g33a, g15_17, s15_17, g41, g31b, g46, g54d from t_st2006 where char(g33a, 4)=vr_g33a and g54d between dat and data and g01a='ИМ'; end if; end while; close myCursor1; set SQL_CMD='select * from session.temp3'; prepare s1 from SQL_CMD; open myCursor; end @ то все ок результат - заполненная таблица , а если вызываю эту поцедуру call temp3('2006-01-01', '2006-12-31'); в другой процедуре res1 и работаю с таблицей session.temp3 то результат res1 пуст?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2007, 09:32 |
|
||
|
просмотр данных во временной табл
|
|||
|---|---|---|---|
|
#18+
Такого не должно быть. Вот пример: Код: plaintext 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. В ses_test2 вызывается ses_test и после вызова обращается к session.t ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2007, 11:30 |
|
||
|
просмотр данных во временной табл
|
|||
|---|---|---|---|
|
#18+
не получается (( пишет что Имя "SESSION.TEMP3" не было определено. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2007, 13:59 |
|
||
|
просмотр данных во временной табл
|
|||
|---|---|---|---|
|
#18+
Тимур Бне получается (( пишет что Имя "SESSION.TEMP3" не было определено.Напишите текст процедуры temp3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2007, 14:08 |
|
||
|
просмотр данных во временной табл
|
|||
|---|---|---|---|
|
#18+
drop procedure temp3@ create procedure temp3(in prev date,in cur date) result set 1 language sql begin declare vr_sum decimal(15,2); declare vr_g33a char(4); declare vr_summa decimal(15,2); declare vr_count smallint; declare SQL_CMD varchar(100); declare myCursor1 cursor with return for select char(g33a,4), sum(g46) from t_st2006 where g01a='ИМ' and g54d between prev and cur group by char(g33a,4) order by char(g33a,4); declare myCursor cursor with return for s1; declare global temporary table session.temp3(g01a varchar(4), g33a varchar(9), g15_17 varchar(3), s15_17 varchar(3), g41 varchar(3), g31b integer, g46 decimal(15,2), g54d date) with replace; select count(distinct char(g33a,4)) into vr_count from t_st2006 where char(g33a,4)=any(select char(g33a,4) from t_st2006 where g01a='ИМ' and g54d between prev and cur group by char(g33a,4)); select sum(g46) into vr_summa from t_st2006 where g01a='ИМ' and g54d between prev and cur; set vr_summa=(vr_summa*5)/100; open myCursor1; while vr_count<>0 do set vr_count=vr_count-1; fetch myCursor1 into vr_g33a, vr_sum; if vr_sum>=vr_summa then insert into session.temp3(g01a, g33a, g15_17, s15_17, g41, g31b, g46, g54d) select g01a, g33a, g15_17, s15_17, g41, g31b, g46, g54d from t_st2006 where char(g33a, 4)=vr_g33a and g54d between prev and cur and g01a='ИМ'; end if; end while; close myCursor1; set SQL_CMD='select * from session.temp3'; prepare s1 from SQL_CMD; open myCursor; end @ вызов делаю так: drop procedure res1@ create procedure res1(in prev date, cur date) result set 1 language sql begin declare vr_g33a_4 varchar(4); declare vr_groupkod integer; declare vr_count_countrygroup integer; declare vr_coun_country integer; declare vr_count_4 integer; declare vr_count integer; declare vr_per decimal(15,2); declare cursor_4_cur cursor for select distinct(char(g33a,4)) from session.temp3 order by char(g33a,4); call temp3(prev, cur); это все в одном текстовом файле ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2007, 14:23 |
|
||
|
|

start [/forum/topic.php?fid=43&msg=34296204&tid=1604043]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
34ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 211ms |
| total: | 315ms |

| 0 / 0 |
