【问题标题】:Passing Stored Procedure from SQL Server to ORACLE linked server将存储过程从 SQL Server 传递到 ORACLE 链接服务器
【发布时间】:2015-09-03 16:47:16
【问题描述】:

我正在尝试将以下 SQL 查询作为链接服务器存储过程传递,但出现错误,请告知,提前谢谢!

消息 7215,第 17 级,状态 1,第 17 行
无法在远程服务器“CAFUAT”上执行语句。

解释:

  • CAFUAT = Oracle 链接服务器
  • CDBWEB = 用户
  • STP_CAF_PERSON = 存储过程

代码:

DECLARE @AVEMAIL VARCHAR(255) 
DECLARE @ANCDPXID NUMERIC
DECLARE @AVCDPURN VARCHAR(12) 

SELECT @AVEMAIL  = 'a@b.com' 
SELECT @ANCDPXID  = null 
SELECT @AVCDPURN  = null 

EXECUTE ('BEGIN CAFUAT.CDBWEB.STP_CAF_PERSON(?,?,?,?); END;', @AVEMAIL,@ANCDPXID,@AVCDPURN) AT CAFUAT

DECLARE @PrintVariable VARCHAR (4000)

SELECT @PrintVariable =  'ANCDPXID ='  +  CONVERT(VARCHAR(23), @ANCDPXID) 
PRINT @PrintVariable

SELECT @PrintVariable =  'AVCDPURN ='  +  ISNULL(CAST(@AVCDPURN AS VARCHAR(8000)), '' ) 
PRINT @PrintVariable

【问题讨论】:

  • 哈。帖子末尾未格式化的GO 听起来像是在命令我们开始工作:)
  • 想一想,你的陈述中有四个问号,但后面只列出了三个参数;你错过了一个参数吗?另外,“CDBWEB”是模式用户还是包名?
  • 嗨 Boneist,你是对的,我已经删除了多余的问号。 CDBWEB 是有权限在链接的 ORACLE 服务器上执行 SP 的用户。
  • 但是,它仍然显示相同的错误消息:
  • AVCDPURN = 消息 7215,级别 17,状态 1,第 16 行无法在远程服务器“CAFUAT”上执行语句。

标签: sql-server oracle stored-procedures


【解决方案1】:

只是为了更新,下面是工作查询,加上我重新安装了 32 位 Oracle 驱动程序;

EXECUTE('Call STP_CAF_PERSON(?,?,?)', @AVEMAIL OUTPUT, @ANCDPXID OUTPUT, @AVCDPURN OUTPUT) AT [CAFUAT]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-19
    • 2013-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-21
    • 2013-12-03
    • 1970-01-01
    相关资源
    最近更新 更多