C#Windowsアプリケーションからストアドプロシージャを呼び出そうとしています。ストアドプロシージャはSQLServer 2008のローカルインスタンスで実行されています。ストアドプロシージャを呼び出すことはできますが、ストアドプロシージャから値を取得することはできません。このストアドプロシージャは、シーケンス内の次の番号を返すことになっています。私はオンラインで調査を行い、私が見たすべてのサイトはこのソリューションが機能していることを示しています。
ストアドプロシージャコード:
ALTER procedure [dbo].[usp_GetNewSeqVal]
@SeqName nvarchar(255)
as
begin
declare @NewSeqVal int
set NOCOUNT ON
update AllSequences
set @NewSeqVal = CurrVal = CurrVal+Incr
where SeqName = @SeqName
if @@rowcount = 0 begin
print 'Sequence does not exist'
return
end
return @NewSeqVal
end
ストアドプロシージャを呼び出すコード:
SqlConnection conn = new SqlConnection(getConnectionString());
conn.Open();
SqlCommand cmd = new SqlCommand(parameterStatement.getQuery(), conn);
cmd.CommandType = CommandType.StoredProcedure;
SqlParameter param = new SqlParameter();
param = cmd.Parameters.Add("@SeqName", SqlDbType.NVarChar);
param.Direction = ParameterDirection.Input;
param.Value = "SeqName";
SqlDataReader reader = cmd.ExecuteReader();
また、DataSet
を使用して同じ結果の戻り値を取得しようとしました。ストアドプロシージャから戻り値を取得するために何が欠けていますか?さらに詳しい情報が必要な場合は、お知らせください。
@ReturnVal
ストアドプロシージャにも追加する必要がありますか?