|
временная таблица
|
|||
---|---|---|---|
#18+
Привет All. создаю временную таблицу: WITH <name> as ( select p1,p2 from p ) не работает :( в чем я ошибаюсь?? PS киньте плиз ссылок на книги по SPL ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2005, 12:20 |
|
временная таблица
|
|||
---|---|---|---|
#18+
Что значит не работает? Как обращаешься ко временной таблице? http://ourworld.compuserve.com/homepages/Graeme_Birchall ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2005, 12:43 |
|
временная таблица
|
|||
---|---|---|---|
#18+
вот простенький пример CREATE PROCEDURE info1 LANGUAGE SQL BEGIN WITH temp1 (NAME) AS ( select p1 from p ) END! так она не собирается "Центром управления" говорит что не верный синтаксис :( ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2005, 12:50 |
|
временная таблица
|
|||
---|---|---|---|
#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.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2005, 13:20 |
|
временная таблица
|
|||
---|---|---|---|
#18+
CREATE PROCEDURE info1 LANGUAGE SQL BEGIN WITH temp1 (NAME) AS ( select p1 from p ) select * from temp1 END ??? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2005, 13:20 |
|
временная таблица
|
|||
---|---|---|---|
#18+
А вообще если что то из процедуры должно возвращаться нужно объявлять курсор, ИМХО. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2005, 13:21 |
|
временная таблица
|
|||
---|---|---|---|
#18+
Может, человеку нужен Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2005, 09:21 |
|
временная таблица
|
|||
---|---|---|---|
#18+
если с курсором то все нормально проходит: declare cret cursor with return for with tmp(name) as ( select 223 from sysibm.sysdummy1 ) select * from tmp; open cret; без курсора не проходит. а если мне курсор не нужен???? мне нужна таблица из которой можно также выборку сделать.... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2005, 10:28 |
|
временная таблица
|
|||
---|---|---|---|
#18+
Тогда тебе сказали: Alexey PopovМожет, человеку нужен Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2005, 11:24 |
|
временная таблица
|
|||
---|---|---|---|
#18+
я так понял что Код: plaintext
нельзя испльзовать в хранимых процедурах ? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2005, 15:19 |
|
временная таблица
|
|||
---|---|---|---|
#18+
2 PSasa WITH можно трактовать как предварительную выборку данных действующую в рамках одного запроса. Например, Код: plaintext 1. 2. 3. 4. 5. 6.
Код: plaintext 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2005, 15:33 |
|
временная таблица
|
|||
---|---|---|---|
#18+
Пардон, ошибочка с обозначением COUNT :-\ Код: plaintext 1. 2. 3. 4. 5. 6.
Код: plaintext 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2005, 15:42 |
|
временная таблица
|
|||
---|---|---|---|
#18+
PSasaя так понял что Код: plaintext
нельзя испльзовать в хранимых процедурах ? можно, можно. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2005, 16:54 |
|
временная таблица
|
|||
---|---|---|---|
#18+
riman PSasaя так понял что Код: plaintext
нельзя испльзовать в хранимых процедурах ? можно, можно. а как??? есть какие то камни подводные или ОНО должно работать "как есть" ??? может что то нужно проинициализировать, создать.... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2005, 17:39 |
|
временная таблица
|
|||
---|---|---|---|
#18+
Код: plaintext
Соответсвенно и таблица создается на уровне одного оператора. Так как это часть SQL запроса, то запрос содержащий WITH может использоваться в SP Если тебе нужно обратится к одной таблице из нескольких операторов тогда нужно пользоваться Код: plaintext 1.
Скажи лучше что ты хочешь сделать ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2005, 17:50 |
|
временная таблица
|
|||
---|---|---|---|
#18+
Мне в зависимости от некоторых условий условий нужно создать разные таблицы, но с одинаковой структутой, а затем сделать выборку из этой таблицы Код: plaintext 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2005, 18:05 |
|
временная таблица
|
|||
---|---|---|---|
#18+
Нет это плохое описание задачи посмотри как я сделал в http://www.sql.ru/forum/actualthread.aspx?tid=173225 И по пунктам изложи примерно тоже самое. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.04.2005, 18:43 |
|
временная таблица
|
|||
---|---|---|---|
#18+
Пример: DECLARE GLOBAL TEMPORARY TABLE SESSION.SOSTAV_FIRST ( ID_AU INTEGER, ID_UNIT INTEGER, ID_DEPT INTEGER, NROUTE INTEGER, ID_DEPT_FIRST INTEGER, ID_DEPT_LAST INTEGER, AMOUNT DOUBLE) WITH REPLACE ON COMMIT PRESERVE ROWS NOT LOGGED; где REPLACE - позволяет повторное объявление, без предварительного DROP. (по моему лучше явно DROP и COMMIT т.к. в UDB v 7.2 for win наблюдал что повторное объявление не до конца очищало память (ОЗУ) на сервере, что при многократном повторении приводило к заметному снижению скорострельности) ON COMMIT PRESERVE ROWS - это чтоб данные после COMMIT оставались в таблице Работать с ней как с обыкновенной, т.е. INSERT, UPDATE, SELECT. Доступ к таблице в только пределах одного коннекта и без ограничений - т.е. видна после создания из любых SP и самой проги. При создании SQL SP, использующих такие таблицы, рекомендую первым исполняемым оператором вставлять оператор IF с невыполнимым условием и объявлением таблицы: IF 1=2 THEN DECLARE GLOBAL TEMPORARY ... ENDIF ... |
|||
:
Нравится:
Не нравится:
|
|||
07.04.2005, 09:22 |
|
временная таблица
|
|||
---|---|---|---|
#18+
golsa При создании SQL SP, использующих такие таблицы, рекомендую первым исполняемым оператором вставлять оператор IF с невыполнимым условием и объявлением таблицы: IF 1=2 THEN DECLARE GLOBAL TEMPORARY ... ENDIF а для чего, можно узнать? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.04.2005, 10:03 |
|
временная таблица
|
|||
---|---|---|---|
#18+
Мне нужно чтоб структура таблицы и ее заполнение происходило по select`у например так: Код: plaintext 1. 2. 3. 4.
таблица создается с нужной структурой но пустая :( ... |
|||
:
Нравится:
Не нравится:
|
|||
07.04.2005, 10:47 |
|
временная таблица
|
|||
---|---|---|---|
#18+
Придется значит два раза запросик писать ... |
|||
:
Нравится:
Не нравится:
|
|||
07.04.2005, 10:56 |
|
временная таблица
|
|||
---|---|---|---|
#18+
gardenmanПридется значит два раза запросик писать это шутка??? что DB2 не может ее сразу заполнить? бред.... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.04.2005, 11:10 |
|
временная таблица
|
|||
---|---|---|---|
#18+
Не бред, а так сделано. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.04.2005, 11:27 |
|
временная таблица
|
|||
---|---|---|---|
#18+
2 riman Это просто обман транслятора. При создании SQL SP проверяется наличие в БД всех таблиц встреченных в тексте процедуры. А для временных таблиц сделано послабление - достаточно наличие соответствующего оператора DECLARE GLOBAL TEMPORARY ... , причем не важно - исполнится он когданибудь или нет (т.е. логика не проверяется). Для процедур, которые получают уже заполненные времянки есть только два пути создания. 1) - перед созданием выполняешь процедуру (скрипт), которая создает временную таблицу. 2) - псевдо создание временной таблицы (DECLARE GLOBAL TEMPORARY - исполняемый оператор, т.е. реально таблица не создается, пока он не будет выполен в процессе выполнения процедуры.) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.04.2005, 12:43 |
|
|
start [/forum/topic.php?fid=43&fpage=147&tid=1605946]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
33ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 152ms |
0 / 0 |