现在的位置: 首页 > 综合 > 正文

SQLServer2000存储过程中通过数据库链接操作Oracle数据库

2013年09月17日 ⁄ 综合 ⁄ 共 881字 ⁄ 字号 评论关闭

2005-2-22开发日记:

我的存储过程局部如下:

CREATE PROCEDURE P_Job_ScanMOMessage
 AS

      ---Step1:从Oracle数据库中读取上行记录写进表:T_DWS_MO_Message
      INSERT INTO T_DWS_MO_Message(MO_Mobile,SMSContent,LinkID) Select MOMobile, Content,LinkID From    openquery(hnoracle,'Select * From MOMessage8')
 
      ---Step2:删除Oracle数据库上的上行记录
      Delete from openquery(hnoracle,'Select * From MOMessage8')

 .....

  注意:蓝色字体部分的两条语句,是操作Oracle数据库的.

  在SQLServer2000企业管理器中编辑存储过程总是出现:
   SQL-DMO (ODBC SQLState:42000)
   错误:7405 异类查询要求为连接设置 ANSI_NULLS和ANSI_WARNINGS ...........

    解决方法如下:
    请在查询分析器中创建这个存储过程,以后这个存储过程在企业管理和查询分析器都能修改了。 
 
对于存储过程,SQL  Server  使用最初创建存储过程时的  SET  ANSI_NULLS  设置值。无论随后何时执行存储过程,SET  ANSI_NULLS  的设置都还原为其最初使用的值并生效。当在存储过程内唤醒调用  SET  ANSI_NULLS  时,其设置不更改。 
 
在执行分布式查询时应将  SET  ANSI_NULLS  设置为  ON。 
 
在执行分布式查询时应将  ANSI_WARNINGS  设置为  ON。 
 
企业管理中的ANSI_NULLS和ANSI_WARNINGS选项不对,但没有方法改动。在查询分析器可以设置ANSI_NULLS和ANSI_WARNINGS选项,而且默认值是对的。所以能在查询分析器创建此类存储过程,而不能在企业管理器创建此类存储过程。

抱歉!评论已关闭.