powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / UPDATE без переменных
11 сообщений из 11, страница 1 из 1
UPDATE без переменных
    #32957894
DIGITALPRO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно сделать

Код: plaintext
1.
2.
3.
INSERT SP_GEOGRAFY (RN, CRN, Adr_type,  Mnemokod,  Full_name)
SELECT                      RN, PRN, GEOGRTYPE, GEOGRNAME, FULLNAME
FROM GEOGRAFY
WHERE RN = TRN;

А можно ли что то подобно сделать для UPDATE?
т.е. не прибегая к переменным?!

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
UPDATE SP_GEOGRAFY k
SET
RN = a.RN,
CRN = a.PRN,
Adr_type = a.GEOGRTYPE,
Mnemokod = a.GEOGRNAME,
Full_name = a.FULLNAME
FROM
SP_GEOGRAFY k,   ------------ ASA
GEOGRAFY a         ------------ ORACLE таблица (ч/з REMOTE Servis)
WHERE
k.RN = a.RN
AND k.RN =  23390001 ;

Все бы ничего, вот только на данный скрипт ругается:
Код: plaintext
1.
Server 'PARUS': [Microsoft][ODBC driver for Oracle] Only keyset-driven cursors are updateable
SQLCODE = - 660 , ODBC  3  state = 'HY000'
===============================
PB 9.0.2 (7534) ASA 9.0.2 (2451)
...
Рейтинг: 0 / 0
UPDATE без переменных
    #32957987
Фотография Рыжий Кот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
иногда делаю так ;) (синтаксис не проверял)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
UPDATE SP_GEOGRAFY k
SET
RN = (SELECT TOP  1  a.RN FROM GEOGRAFY a WHERE k.RN = a.RN),
CRN = (SELECT TOP  1  a.PRN FROM GEOGRAFY a WHERE k.RN = a.RN),
Adr_type = (SELECT TOP  1  a.GEOGRTYPE FROM GEOGRAFY a WHERE k.RN = a.RN) ,
Mnemokod =(SELECT TOP  1  a.GEOGRNAME FROM GEOGRAFY a WHERE k.RN = a.RN),
Full_name =(SELECT TOP  1  a.FULLNAME FROM GEOGRAFY a WHERE k.RN = a.RN) 
WHERE k.RN =  23390001 ;


...
Рейтинг: 0 / 0
UPDATE без переменных
    #32958000
L0cat0r
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot DIGITALPRO]Можно сделать

Код: plaintext
1.
2.
3.
INSERT SP_GEOGRAFY (RN, CRN, Adr_type,  Mnemokod,  Full_name)
SELECT                      RN, PRN, GEOGRTYPE, GEOGRNAME, FULLNAME
FROM GEOGRAFY
WHERE RN = TRN;

INSERT [ INTO ] [ owner.]table-name [ ( column-name, ... ) ]
[ ON EXISTING { ERROR | SKIP | UPDATE } ]
проверял ?

Удачи !
...
Рейтинг: 0 / 0
UPDATE без переменных
    #32958045
vinogradov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DIGITALPROМожно сделать

Код: plaintext
1.
2.
3.
INSERT SP_GEOGRAFY (RN, CRN, Adr_type,  Mnemokod,  Full_name)
SELECT                      RN, PRN, GEOGRTYPE, GEOGRNAME, FULLNAME
FROM GEOGRAFY
WHERE RN = TRN;

А можно ли что то подобно сделать для UPDATE?
т.е. не прибегая к переменным?!

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
UPDATE SP_GEOGRAFY k
SET
RN = a.RN,
CRN = a.PRN,
Adr_type = a.GEOGRTYPE,
Mnemokod = a.GEOGRNAME,
Full_name = a.FULLNAME
FROM
SP_GEOGRAFY k,   ------------ ASA
GEOGRAFY a         ------------ ORACLE таблица (ч/з REMOTE Servis)
WHERE
k.RN = a.RN
AND k.RN =  23390001 ;

Все бы ничего, вот только на данный скрипт ругается:
Код: plaintext
1.
Server 'PARUS': [Microsoft][ODBC driver for Oracle] Only keyset-driven cursors are updateable
SQLCODE = - 660 , ODBC  3  state = 'HY000'
===============================
PB 9.0.2 (7534) ASA 9.0.2 (2451)

Как мне кажется, эффективней прочитать данные из ORACLE во временную таблицу а затем UPDATE. С proxy иногда возникают проблемы.
...
Рейтинг: 0 / 0
UPDATE без переменных
    #32958261
DIGITALPRO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TO Рыжий Кот
Что то у меня ощущения что это немного не правильно, для каждой колонки делать селект.

ТО L0cat0r
ON EXISTING не прокатил пишит синтах.ошибка
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
INSERT into SP_GEOGRAFY (RN, CRN, Adr_type,  Mnemokod,  Full_name)
ON EXISTING UPDATE 
--WITH AUTO NAME
--ON EXISTING ERROR
SELECT g.RN as RN, g.PRN as CRN, g.GEOGRTYPE as Adr_type, g.GEOGRNAME as Mnemokod, g.FULLNAME as Full_name
FROM 
GEOGRAFY g, 
SLVZ_ASA_DB db
WHERE 
g.RN = db.TABLE_RN
AND db.TABLE_RN =  23390001 
AND db.table_name = 'GEOGRAFY'
AND db.IUD = 'U'

ТО vinogradov
А это на базу ни как не повлияет, просто необходимо делать примерно для 20 таблиц и примерно 3-4раза в день?
...
Рейтинг: 0 / 0
UPDATE без переменных
    #32958561
vinogradov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DIGITALPRO TO Рыжий Кот
Что то у меня ощущения что это немного не правильно, для каждой колонки делать селект.

ТО L0cat0r
ON EXISTING не прокатил пишит синтах.ошибка
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
INSERT into SP_GEOGRAFY (RN, CRN, Adr_type,  Mnemokod,  Full_name)
ON EXISTING UPDATE 
--WITH AUTO NAME
--ON EXISTING ERROR
SELECT g.RN as RN, g.PRN as CRN, g.GEOGRTYPE as Adr_type, g.GEOGRNAME as Mnemokod, g.FULLNAME as Full_name
FROM 
GEOGRAFY g, 
SLVZ_ASA_DB db
WHERE 
g.RN = db.TABLE_RN
AND db.TABLE_RN =  23390001 
AND db.table_name = 'GEOGRAFY'
AND db.IUD = 'U'

ТО vinogradov
А это на базу ни как не повлияет, просто необходимо делать примерно для 20 таблиц и примерно 3-4раза в день?
Я думаю, что не повлияет. Для временных таблиц в лог ничего не пишется
...
Рейтинг: 0 / 0
UPDATE без переменных
    #32958656
DIGITALPRO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дело в том что я делаю не временные таблицы, а создаю каждый раз новую? иначе у меня таблиц бедет в базе по 3шт каждого экземпляра
1. Оракловая
2. Темповая
3. ASA
И все они одикановые :((

т.е.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
SELECT g.RN, g.PRN as crn, g.GEOGRTYPE as Adr_type, g.GEOGRNAME as Mnemokod, g.FULLNAME as Full_name
INTO TMP_LOCAL
FROM
GEOGRAFY g,
SLVZ_ASA_DB db
WHERE g.RN = db.TABLE_RN
AND db.table_name = ls_TN
AND db.IUD = 'U';

INSERT SP_GEOGRAFY (RN, CRN, Adr_type,  Mnemokod,  Full_name)
ON EXISTING UPDATE
SELECT * FROM TMP_LOCAL;

DROP TABLE tmp_local;
...
Рейтинг: 0 / 0
UPDATE без переменных
    #32958726
vinogradov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DIGITALPRO TO Рыжий Кот
Что то у меня ощущения что это немного не правильно, для каждой колонки делать селект.

ТО L0cat0r
ON EXISTING не прокатил пишит синтах.ошибка
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
INSERT into SP_GEOGRAFY (RN, CRN, Adr_type,  Mnemokod,  Full_name)
ON EXISTING UPDATE 
--WITH AUTO NAME
--ON EXISTING ERROR
SELECT g.RN as RN, g.PRN as CRN, g.GEOGRTYPE as Adr_type, g.GEOGRNAME as Mnemokod, g.FULLNAME as Full_name
FROM 
GEOGRAFY g, 
SLVZ_ASA_DB db
WHERE 
g.RN = db.TABLE_RN
AND db.TABLE_RN =  23390001 
AND db.table_name = 'GEOGRAFY'
AND db.IUD = 'U'

ТО vinogradov
А это на базу ни как не повлияет, просто необходимо делать примерно для 20 таблиц и примерно 3-4раза в день?
Я думаю, что не повлияет. Для временных таблиц в лог ничего не пишется
...
Рейтинг: 0 / 0
UPDATE без переменных
    #32958763
L0cat0r
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТО L0cat0r
ON EXISTING не прокатил пишит синтах.ошибка
Код: plaintext
1.
2.
INSERT into SP_GEOGRAFY (RN, CRN, Adr_type,  Mnemokod,  Full_name)
ON EXISTING UPDATE 
1. отсутствие PK на SP_GEOGRAFY (BOL)
2. вставлять в процедуре (ODBC on existing не поймет)
( INSERT ... ON EXISTING is a vendor extension. )
3. динамическое декларирование временных по базовым - FAQ

удачи !
...
Рейтинг: 0 / 0
UPDATE без переменных
    #32959668
vinogradov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DIGITALPROдело в том что я делаю не временные таблицы, а создаю каждый раз новую? иначе у меня таблиц бедет в базе по 3шт каждого экземпляра
1. Оракловая
2. Темповая
3. ASA
И все они одикановые :((

т.е.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
SELECT g.RN, g.PRN as crn, g.GEOGRTYPE as Adr_type, g.GEOGRNAME as Mnemokod, g.FULLNAME as Full_name
INTO TMP_LOCAL
FROM
GEOGRAFY g,
SLVZ_ASA_DB db
WHERE g.RN = db.TABLE_RN
AND db.table_name = ls_TN
AND db.IUD = 'U';

INSERT SP_GEOGRAFY (RN, CRN, Adr_type,  Mnemokod,  Full_name)
ON EXISTING UPDATE
SELECT * FROM TMP_LOCAL;

DROP TABLE tmp_local;


Вы временных таблиц и не увидите их создавать ненадо . см. HELP
select * into #r from ORACLE таблица,
а дальше используйте таблицу #r
...
Рейтинг: 0 / 0
UPDATE без переменных
    #32961466
DIGITALPRO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Именно так и пришлось выйти из ситуации.
Всем большое спасибо.

P.S. Переадресовал бы кто нибудь данную проблему в SYBASE, что б можно было обходится простым UPDATE-ом
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
UPDATE SP_GEOGRAFY k
SET
RN = a.RN,
CRN = a.PRN,
Adr_type = a.GEOGRTYPE,
Mnemokod = a.GEOGRNAME,
Full_name = a.FULLNAME
FROM
SP_GEOGRAFY k,   ------------ ASA
GEOGRAFY a         ------------ ORACLE таблица (ч/з REMOTE Servis)
WHERE
k.RN = a.RN
AND k.RN =  23390001 ;
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / UPDATE без переменных
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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