Tôi đang cố gọi một thủ tục được lưu trữ từ ứng dụng C # windows của mình. Thủ tục được lưu trữ đang chạy trên phiên bản cục bộ của SQL Server 2008. Tôi có thể gọi thủ tục được lưu trữ nhưng tôi không thể lấy lại giá trị từ thủ tục được lưu trữ. Thủ tục được lưu trữ này được cho là trả về số tiếp theo trong chuỗi. Tôi đã thực hiện nghiên cứu trực tuyến và tất cả các trang web tôi đã xem đều chỉ ra giải pháp này hoạt động.
Mã thủ tục được lưu trữ:
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
Mã gọi thủ tục được lưu trữ:
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();
Tôi cũng đã thử sử dụng a DataSet
để truy xuất giá trị trả về với kết quả tương tự. Tôi còn thiếu gì để nhận giá trị trả về từ thủ tục đã lưu trữ của mình? Nếu cần thêm thông tin, xin vui lòng cho tôi biết.
@ReturnVal
vào Thủ tục lưu trữ không?