SQL Server 2008 R2 に、カーソルを 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 の両方にストアド プロシージャを配置することです。