Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 вопрос по запросу к ораклу  [new]
dimakz
Member

Откуда:
Сообщений: 1574
есть табл. custom в оракле
есть табл. table1 в мс скл

есть запрос, который работает
select * from 
openquery(EOP, 'select id, price, plan from custom')


EOP линк к ораклу..

как сделать чтоб данные из таблицы table1 обновились в оракловой табл. custom

update  custom set price='10' 
where id in (select id from table1)
12 апр 12, 12:41    [12405026]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по запросу к ораклу  [new]
Ivan Durak
Member

Откуда: Minsk!!!
Сообщений: 3752
dimakz
есть табл. custom в оракле
есть табл. table1 в мс скл

есть запрос, который работает
select * from 
openquery(EOP, 'select id, price, plan from custom')


EOP линк к ораклу..

как сделать чтоб данные из таблицы table1 обновились в оракловой табл. custom

update  custom set price='10' 
where id in (select id from table1)


Нужно в ОРАКЛЕ ! сделать линк к МсСКЛ и там делать апдейт в Custom по выборке из мсскл
12 апр 12, 13:24    [12405391]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по запросу к ораклу  [new]
dimakz
Member

Откуда:
Сообщений: 1574
а как в оракле делается линк ?
12 апр 12, 13:44    [12405573]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по запросу к ораклу  [new]
dimakz
Member

Откуда:
Сообщений: 1574
а можно не создавая линк в оракле
тут сделать?
12 апр 12, 13:45    [12405582]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по запросу к ораклу  [new]
Glory
Member

Откуда:
Сообщений: 104751
В команде UPDATE разрешено использовать и openquery()
12 апр 12, 13:52    [12405643]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по запросу к ораклу  [new]
Гузы
Guest
dimakz,
CLR?
12 апр 12, 13:56    [12405678]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по запросу к ораклу  [new]
dimakz
Member

Откуда:
Сообщений: 1574
а как сделать?

select * from 
openquery(EOP, '
update  custom set price=''10'' 
where id in (select id from ???table1????) --тут как указать что табл. лежит на мс скл сервере
')
12 апр 12, 13:57    [12405689]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по запросу к ораклу  [new]
Glory
Member

Откуда:
Сообщений: 104751
dimakz
а как сделать?

А как вы пишите UPDATE для двух таблиц самого MSSQL ?
12 апр 12, 13:58    [12405701]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по запросу к ораклу  [new]
dimakz
Member

Откуда:
Сообщений: 1574
было бы так

update  table2 set price='10' 
where id in (select id from table1)
12 апр 12, 14:04    [12405763]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по запросу к ораклу  [new]
Glory
Member

Откуда:
Сообщений: 104751
И что мешает вместо table2 поставить openquery() ?
12 апр 12, 14:09    [12405800]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по запросу к ораклу  [new]
user89
Member

Откуда:
Сообщений: 2083
dimakz,

insert openquery(OracleServer, 'select Test_ID, Test_Date, Test_Attr from test_table')
values (1, getdate(), 'Новое значение')

delete from openquery(OracleServer, 'select Test_ID from test_table where Test_ID = 1')

update openquery (OracleSvr, 'SELECT name FROM joe.titles WHERE id = 101')
set name = 'ADifferentName';


На всякий случай:
https://www.sql.ru/forum/actualthread.aspx?tid=434067
12 апр 12, 14:22    [12405902]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по запросу к ораклу  [new]
dimakz
Member

Откуда:
Сообщений: 1574
мне нужно не что такого


update openquery(EOP, 'select plan from custom')
set plan='UNLIM' 
where id in (select id from table1)


но тут поля plan и id относятся к табл custom, а она в оракле,
как тут опенквери добавить?
13 апр 12, 08:23    [12409512]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по запросу к ораклу  [new]
user89
Member

Откуда:
Сообщений: 2083
dimakz
но тут поля plan и id относятся к табл custom, а она в оракле

???
update openquery(EOP, 'select plan from custom where id in (select id from table1)')
set plan='UNLIM' 
13 апр 12, 10:14    [12410068]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по запросу к ораклу  [new]
user89
Member

Откуда:
Сообщений: 2083
dimakz,
был не прав.
Поскольку table1 живет на MSSQL-сервере, то
'select plan from custom where id in (select id from table1)')
будет ошибочна.

Думаю, самый правильный вариант как советовали выше:
Нужно в ОРАКЛЕ ! сделать линк к МсСКЛ и там делать апдейт в Custom по выборке из мсскл
13 апр 12, 10:58    [12410304]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по запросу к ораклу  [new]
Glory
Member

Откуда:
Сообщений: 104751
dimakz
но тут поля plan и id относятся к табл custom, а она в оракле,
как тут опенквери добавить?

Вы уже все добавили
В чем проблема то ?
13 апр 12, 11:09    [12410405]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по запросу к ораклу  [new]
dimakz
Member

Откуда:
Сообщений: 1574
update openquery(EOP, 'select plan from custom')
set plan='UNLIM' 
where id in (select id from table1)


Msg 207, Level 16, State 1, Line 3
Invalid column name 'id'
13 апр 12, 12:03    [12410915]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по запросу к ораклу  [new]
Glory
Member

Откуда:
Сообщений: 104751
dimakz
Invalid column name 'id'

Ну так ваш openquery возвращает столбец с таким именем ?
13 апр 12, 12:08    [12410948]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по запросу к ораклу  [new]
dimakz
Member

Откуда:
Сообщений: 1574
сделал так

update openquery(EOP, 'select id, plan from custom')
set plan='UNLIM'
where id in (select id from table1)

выдает ошибку
Msg 7333, Level 16, State 2, Line 1
Cannot fetch a row using a bookmark from OLE DB provider "OraOLEDB.Oracle" for linked server "EOP"
13 апр 12, 12:34    [12411209]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по запросу к ораклу  [new]
Glory
Member

Откуда:
Сообщений: 104751
У вашей таблицы custom нет ПервичногоКлюча
13 апр 12, 12:59    [12411375]     Ответить | Цитировать Сообщить модератору
 Re: вопрос по запросу к ораклу  [new]
nezhadnye_my
Guest
dimakz
сделал так

update openquery(EOP, 'select id, plan from custom')
set plan='UNLIM'
where id in (select id from table1)

выдает ошибку
Msg 7333, Level 16, State 2, Line 1
Cannot fetch a row using a bookmark from OLE DB provider "OraOLEDB.Oracle" for linked server "EOP"


и Вам похоже туда же...

http://social.msdn.microsoft.com/Forums/eu/sqldatabaseengine/thread/3160c55e-9060-4ffc-9e63-90d381742851

Looking through the error which you get, it appears this is known issue with oracle 10.2 x64 oledb provider. When a linked server with 64 bit Oracle Provider is used to update or delete data on the remote Oracle Server, the following error occurs: Cannot fetch a row using a bookmark from OLE DB provider "OraOLEDB.Oracle" for linked server "xxxxx"." It is a bug in oracle 10.2 x64 oledb provider.
13 апр 12, 18:19    [12413837]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить