首页 > 解决方案 > 从 SQL Server 存储过程调用 Oracle 过程 - 尝试发送 UDTT 时出现错误“必须声明标量变量”

问题描述

我在 oracle 数据库中有一个名为 UpdateCase 的过程,我无法更改。其中一个参数是对象类型。我的目标是从 MSSQL 调用该存储过程。我们已经创建了链接服务器和一个用户定义的表类型,它反映了 oracle 数据库中的对象类型。这是调用过程的代码。

ALTER PROCEDURE [dbo].[spDMVUpdateCase]
    @CaseNumber INT = NULL,
    @User VARCHAR(50) = NULL
AS
DECLARE @ErrorMessage NVARCHAR(200)
DECLARE @ErrorSeverity INT
DECLARE @ErrorState INT
DECLARE @CaseRec AS CRASH.CaseSubType
BEGIN
    EXECUTE('Call UpdateCase(?,?,?,?)',
             @CaseRec,
             @User,
             @ErrorState,
             @ErrorMessage) AT ALIS
END

当我尝试执行此代码时,我得到“必须声明标量变量“@CaseRec”。

有没有办法从 MSSQL 将非标量变量发送到 oracle 过程?

标签: sql-serverdatabaseoraclestored-procedures

解决方案


推荐阅读