さまざまなストアドプロシージャがあります。ストアドプロシージャを実行し、行数(呼び出されたプロシージャによって返された行の数)のみを返すためにストアドプロシージャが必要であり、c#コードで受け取る必要があります。
これを行うための最良の方法は何ですか?
さまざまなストアドプロシージャがあります。ストアドプロシージャを実行し、行数(呼び出されたプロシージャによって返された行の数)のみを返すためにストアドプロシージャが必要であり、c#コードで受け取る必要があります。
これを行うための最良の方法は何ですか?
SQL Server を使用していると仮定すると (コード スニペットから可能です)、おそらく次のようなものが機能します。
exec('exec <your stored procedure goes here>; select @@RowCount')
あなたは SQL Server を実行しているので、必ずしもきれいではない解決策を 1 つ思いつくことができます。
一時テーブル (より新しいバージョンの SQL Server を使用している場合はテーブル変数) を作成します。次に実行します。
exec(`
declare @t table (
<columns go here>
);
insert into @t
exec(''<your exec here>'');
select @rowcount
');
そして今、私がそれを言ったので、私はお勧めしsp_executesql
ます. これは次のようになります。
declare @sql nvarchar(max) = N'exec '+@YOURQUERY + '; set @RowCount = @@RowCount';
exec sp_executesql @sql, N'@RowCount int output', @RowCount = RowCount output;
私は昨日のほとんどを、insert 内でストアド プロシージャを呼び出すときに発生する不可解な状態のデバッグに費やしました。