Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Nhận giá trị trả lại trong C # asp.net từ một thủ tục được lưu trữ (vấn đề cú pháp)

Để nắm bắt GIÁ TRỊ TRỞ LẠI (do SQL trả về bằng cú pháp RETURN ({number})), hãy sử dụng:

cmdHeader.Parameters.Add("@ReturnValue", SqlDbType.Int, 4).Direction = ParameterDirection.ReturnValue;

Ngoài ra, bạn có thể nên sử dụng SCOPE_IDENTITY () thay vì @@ IDENTITY

Chỉnh sửa:
Vì vậy, mầm của bạn sẽ làm một cái gì đó như:

DECLARE @NewId INTEGER
INSERT SomeTable(FieldA) VALUES ('Something')
SELECT @NewId = SCOPE_IDENTITY()
RETURN (@NewId)

Và mã C # của bạn để truy xuất giá trị đó sẽ là:

int newId = cmdHeader.Parameters[@ReturnValue].value;

Chỉnh sửa 2:
Được rồi, câu hỏi ban đầu đã nhầm lẫn vấn đề vì "giá trị trả về" là một thứ khác với những gì bạn đang thực sự làm là trả về một tập kết quả một cột.

Vì vậy, thay vào đó KHÔNG NÊN thêm một tham số ReturnValue nào cả. Chỉ cần sử dụng ExecuteScalar () sử dụng thiết lập SqlCommand ban đầu của bạn như bên dưới:

int newId = Convert.ToInt32(cmdHeader.ExecuteScalar());


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 10 SP_EXECUTESQL Cần tránh để có SQL động tốt hơn

  2. Trả về danh sách các hàm phân vùng trong SQL Server (T-SQL)

  3. Tại sao việc sử dụng ký tự Dấu gạch dưới trong bộ lọc LIKE lại cho tôi tất cả kết quả?

  4. SQL:tìm kiếm một chuỗi trong mỗi cột varchar trong cơ sở dữ liệu

  5. Bạn nên chọn kiểu dữ liệu MONEY hay DECIMAL (x, y) trong SQL Server?