我在 SQL Server 2008 R2 中有一个存储过程,它返回一个 Cursor 作为 OUTPUT 值。是否可以使用 .NET 4.0 框架将此光标返回到 C# 应用程序?
我的存储过程具有以下签名:
CREATE PROCEDURE [dbo].[MyProcedure]
@nuserid int,
@nfetchtype int,
@returncursor CURSOR VARYING OUTPUT
AS
...
在存储过程结束时我有
...
set @returncursor = CURSOR FORWARD_ONLY STATIC for SELECT * FROM MyTable WHERE column=@Value
open @returncursor
END
在我的 C# Web 应用程序中,我使用了一个利用 System.Data.DbType 的包装器,并将我的返回值/参数设置为 DbType.Object。当我对数据库执行查询时,出现以下错误:
操作数类型冲突:sql_variant 与游标不兼容
这个 DbType.Object 参数将适用于 Oracle 中的 REFCURSOR,但我很想知道是否有办法为 SqlServer 做同样的事情。我的目标是在 SqlServer 和 Oracle 中拥有完全相同签名的存储过程。