SQL中能不能更新ORACLE中的表,急。。。。

时间:2021-11-18 19:09:04
SQL读取ORACLE中的表数据是可以的
但是能不能在SQL中更新ORACLE中的表数据呢,急,请高手指点

11 个解决方案

#1


貌似用连接服务器,只要权限够,能查询就能更新

#2


分配给你的用户没有更新的权限?

#3


引用 1 楼 haiwer 的回复:
貌似用连接服务器,只要权限够,能查询就能更新
..

#4


有没有人写过呀
查询好办呀
select *
 From opendatasource('MSDAORA', 'Data Source=;User ID=;Password=).. APPS.XX
这样就行了

但是更新如何来做呢

#5


应该可以的,用链接服务器,或用openrowset,opendatasource都可以
示例:update a set a.aa='dkdk' from 链接服务器.数据库.所有者.表名

#6


不过要有权限啊!

#7


try:

update opendatasource('MSDAORA', 'Data Source=;User ID=;Password=).. APPS.XX
set ...

or 

update a
    set a.col=...
from (
    select * 
    From opendatasource('MSDAORA', 'Data Source=;User ID=;Password=).. APPS.XX 
) as a

#8


应该看得懂吧!
二、使用语句链接ORACLE读取数据

1.使用sp_addlinkedserver添加链接服务器

EXEC sp_addlinkedserver

   @server = 'SWFCJKXORACLE', --链接服务器名称,任意取名

   @srvproduct = 'Oracle',  --数据库服务产品

   @provider = 'MSDAORA',  --数据库服务提供者

   @datasrc = '218.194.106.83/JKXORACL'--Oracle数据库连接字符串

2.使用sp_addlinkedsrvlogin为链接服务器添加Oracle用户名和密码

sp_addlinkedsrvlogin @rmtsrvname =  'SWFCJKXORACLE', --登录远程ORACLE链接服务器名

            @useself =  'false',

            @locallogin =null,  --本地登录名

            @rmtuser =  'STUD20050704100',--登录Oracle用户名

            @rmtpassword =  'STUD20050704100' --登录Oracle密码

3.查询、操作Oracle数据

--查询ORACLE链接服务器中的数据库,注意使用:方案名.表名

--注:方案名即用户名、表名要使用大写,否则若表名区分大小写要加双引号。

select * from SWFCJKXORACLE..STUD20050704100.STUDINFO

select * from SWFCJKXORACLE.."STUD20050704100"."STUDINFO"

--执行删除

Delete From SWFCJKXORACLE.."STUD20050704100"."STUDINFO" WHERE StudNo=’20010704070’

--执行插入

Insert Into SWFCJKXORACLE.."STUD20050704100"."STUDINFO"

(StudNo,StudName,StudSex,StudBirthDay,ClassID)

VALUES

('20010505070','swfcsunboy','男','1982-1-1','20010505')

--与本地SQL Server数据表关联

select * from swfcjkxoracle.."STUD20050704100"."STUDINFO" S,STUDINFO SI

where S.STUDNO=SI.STUDNO

1 设置ORACLE链接服务器属性

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/swfcsunboy/archive/2007/10/23/1838459.aspx

#9


链接服务器可以,也可以用2005的同步oracle复制.

#10


应该是可以的,但是老是报错:
OLE DB 提供程序 'MSDAORA' 为列提供的元数据不一致。执行时更改了元数据信息。
OLE DB 错误跟踪[Non-interface error:  Column 'LINE_ID' (compile-time ordinal 1) of object '"APPS"."XX"' was reported to have a DBTYPE of 130 at compile time and 5 at run time]。

#11


学习。。

#1


貌似用连接服务器,只要权限够,能查询就能更新

#2


分配给你的用户没有更新的权限?

#3


引用 1 楼 haiwer 的回复:
貌似用连接服务器,只要权限够,能查询就能更新
..

#4


有没有人写过呀
查询好办呀
select *
 From opendatasource('MSDAORA', 'Data Source=;User ID=;Password=).. APPS.XX
这样就行了

但是更新如何来做呢

#5


应该可以的,用链接服务器,或用openrowset,opendatasource都可以
示例:update a set a.aa='dkdk' from 链接服务器.数据库.所有者.表名

#6


不过要有权限啊!

#7


try:

update opendatasource('MSDAORA', 'Data Source=;User ID=;Password=).. APPS.XX
set ...

or 

update a
    set a.col=...
from (
    select * 
    From opendatasource('MSDAORA', 'Data Source=;User ID=;Password=).. APPS.XX 
) as a

#8


应该看得懂吧!
二、使用语句链接ORACLE读取数据

1.使用sp_addlinkedserver添加链接服务器

EXEC sp_addlinkedserver

   @server = 'SWFCJKXORACLE', --链接服务器名称,任意取名

   @srvproduct = 'Oracle',  --数据库服务产品

   @provider = 'MSDAORA',  --数据库服务提供者

   @datasrc = '218.194.106.83/JKXORACL'--Oracle数据库连接字符串

2.使用sp_addlinkedsrvlogin为链接服务器添加Oracle用户名和密码

sp_addlinkedsrvlogin @rmtsrvname =  'SWFCJKXORACLE', --登录远程ORACLE链接服务器名

            @useself =  'false',

            @locallogin =null,  --本地登录名

            @rmtuser =  'STUD20050704100',--登录Oracle用户名

            @rmtpassword =  'STUD20050704100' --登录Oracle密码

3.查询、操作Oracle数据

--查询ORACLE链接服务器中的数据库,注意使用:方案名.表名

--注:方案名即用户名、表名要使用大写,否则若表名区分大小写要加双引号。

select * from SWFCJKXORACLE..STUD20050704100.STUDINFO

select * from SWFCJKXORACLE.."STUD20050704100"."STUDINFO"

--执行删除

Delete From SWFCJKXORACLE.."STUD20050704100"."STUDINFO" WHERE StudNo=’20010704070’

--执行插入

Insert Into SWFCJKXORACLE.."STUD20050704100"."STUDINFO"

(StudNo,StudName,StudSex,StudBirthDay,ClassID)

VALUES

('20010505070','swfcsunboy','男','1982-1-1','20010505')

--与本地SQL Server数据表关联

select * from swfcjkxoracle.."STUD20050704100"."STUDINFO" S,STUDINFO SI

where S.STUDNO=SI.STUDNO

1 设置ORACLE链接服务器属性

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/swfcsunboy/archive/2007/10/23/1838459.aspx

#9


链接服务器可以,也可以用2005的同步oracle复制.

#10


应该是可以的,但是老是报错:
OLE DB 提供程序 'MSDAORA' 为列提供的元数据不一致。执行时更改了元数据信息。
OLE DB 错误跟踪[Non-interface error:  Column 'LINE_ID' (compile-time ordinal 1) of object '"APPS"."XX"' was reported to have a DBTYPE of 130 at compile time and 5 at run time]。

#11


学习。。