在SQL Server里的查询分析器里可以select到oracle表里面的数据了,但不知道如何调用oracle的存储过程select * from www..SCOTT.DEPT
返回结果如下:
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON我在oracle创建不带参数的存储过程如下:SQL> create or replace procedure out_time
2 is
3 begin
4 dbms_session.set_nls('nls_date_format','''yyyy_mm_dd hh24:mi:ss''');
5 dbms_output.put_line(sysdate);
6 end;
7 /过程已创建。SQL> exec out_time;
2008_11_24 17:14:27PL/SQL 过程已成功完成。我在SQL Server的查询分析器里测试:
select * FROM OPENQUERY(www,'out_time')
GO报错如下:服务器: 消息 7357,级别 16,状态 2,行 1
未能处理对象 'out_time'。OLE DB 提供程序 'MSDAORA' 指出该对象中没有任何列。
OLE DB 错误跟踪[Non-interface error: OLE DB provider unable to process object, since the object has no columnsProviderName='MSDAORA', Query=out_time']。
是什么原因?我调用方式有问题?不带参数的怎么调用?带参数的呢?
返回结果如下:
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON我在oracle创建不带参数的存储过程如下:SQL> create or replace procedure out_time
2 is
3 begin
4 dbms_session.set_nls('nls_date_format','''yyyy_mm_dd hh24:mi:ss''');
5 dbms_output.put_line(sysdate);
6 end;
7 /过程已创建。SQL> exec out_time;
2008_11_24 17:14:27PL/SQL 过程已成功完成。我在SQL Server的查询分析器里测试:
select * FROM OPENQUERY(www,'out_time')
GO报错如下:服务器: 消息 7357,级别 16,状态 2,行 1
未能处理对象 'out_time'。OLE DB 提供程序 'MSDAORA' 指出该对象中没有任何列。
OLE DB 错误跟踪[Non-interface error: OLE DB provider unable to process object, since the object has no columnsProviderName='MSDAORA', Query=out_time']。
是什么原因?我调用方式有问题?不带参数的怎么调用?带参数的呢?
http://topic.csdn.net/t/20060531/12/4790992.html
换一下其它方式建立键接,OLE的方式好象对调用procedure是有问题的.
exec sp_addlinkedserver 'OrclDB ','Oracle',' MSDAORA','远程服务器名或ip地址'
exec sp_addlinkedsrvlogin 'OrclDB,'false',null,'用户名','密码'
exec sp_serveroption 'OrclDB,'rpc out','true' --这个允许调用链接服务器上的存储过程
go你试按这个方法连接数据,再执行
我换这种方式(ODBC)测试结果跟上面的还是一样
一遇到有那种字段的表就报错,用链接服务器和DTS都是,我想用链接服务器调用oracle的
存储过程也是基于想用oracle存储过程把想要的数据转换到自己建的一张表里再在SQL Server
那边select(在SQL 的一个存储过程里,先执行ORACLE里的存储过程把目标数据写到没有
字段的表里,再通过链接服务器select没有问题字段的表)