Tôi muốn thực hiện một thủ tục được lưu trữ trong SQL Server và gán đầu ra cho một biến (nó trả về một giá trị đơn)?Làm thế nào để trả về đầu ra của thủ tục lưu trữ thành một biến trong máy chủ sql
Trả lời
Điều đó tùy thuộc vào bản chất của thông tin bạn muốn trả lại.
Nếu nó là một giá trị số nguyên duy nhất, bạn có thể sử dụng return
tuyên bố
create proc myproc
as
begin
return 1
end
go
declare @i int
exec @i = myproc
Nếu bạn có một giá trị số nguyên không, hoặc một số giá trị vô hướng, bạn có thể sử dụng các thông số đầu ra
create proc myproc
@a int output,
@b varchar(50) output
as
begin
select @a = 1, @b='hello'
end
go
declare @i int, @j varchar(50)
exec myproc @i output, @j output
Nếu bạn muốn trả lại một tập dữ liệu, bạn có thể sử dụng insert exec
create proc myproc
as
begin
select name from sysobjects
end
go
declare @t table (name varchar(100))
insert @t (name)
exec myproc
Bạn thậm chí có thể trả về một con trỏ nhưng đó chỉ là kinh khủng vì vậy tôi sẽ không đưa ra một ví dụ :)
Đối với số nguyên, bạn vẫn nên sử dụng tham số đầu ra. Giá trị trả về dự trữ cho những gì chúng được thiết kế: trạng thái. Lập trình tốt các khái niệm riêng biệt và viết mã vững chắc. Điều gì sẽ xảy ra nếu thủ tục lưu trữ của bạn trả về một số nguyên xảy ra thất bại? –
tôi đã quan sát thấy một sự bất thường khi tôi trả về một số thập phân vị trí thập phân của nó là số không nhưng khi tôi thay đổi nó để chọn nó trả về số thập phân một cách chính xác. – Rama
@DRAM 'return' trả về một ** số nguyên ** giá trị – podiluska
Bạn có thể sử dụng câu lệnh return
bên trong một thủ tục được lưu trữ để trả về mã trạng thái số nguyên (và chỉ có kiểu số nguyên). Theo quy ước, giá trị trả về bằng 0 được sử dụng để thành công.
Nếu không có return
được đặt rõ ràng, thì thủ tục được lưu sẽ trả về 0.
CREATE PROCEDURE GetImmediateManager
@employeeID INT,
@managerID INT OUTPUT
AS
BEGIN
SELECT @managerID = ManagerID
FROM HumanResources.Employee
WHERE EmployeeID = @employeeID
if @@rowcount = 0 -- manager not found?
return 1;
END
Và bạn gọi nó theo cách này:
DECLARE @return_status int;
DECLARE @managerID int;
EXEC @return_status = GetImmediateManager 2, @managerID output;
if @return_status = 1
print N'Immediate manager not found!';
else
print N'ManagerID is ' + @managerID;
go
Bạn nên sử dụng giá trị trả về cho chỉ mã trạng thái. Để trả về dữ liệu, bạn nên sử dụng tham số đầu ra.
Nếu bạn muốn trả lại tập dữ liệu, hãy sử dụng thông số đầu ra loại cursor
.
@downvoter, bạn có phiền để giải thích điều gì sai? –
Sử dụng mã này, làm việc đúng cách
CREATE PROCEDURE [dbo].[sp_delete_item]
@ItemId int = 0
@status bit OUT
AS
Begin
DECLARE @cnt int;
DECLARE @status int =0;
SET NOCOUNT OFF
SELECT @cnt =COUNT(Id) from ItemTransaction where ItemId = @ItemId
if(@cnt = 1)
Begin
return @status;
End
else
Begin
SET @status =1;
return @status;
End
END
Execute SP
DECLARE @statuss bit;
EXECUTE [dbo].[sp_delete_item] 6, @statuss output;
PRINT @statuss;
- 1. lưu trữ thủ tục trả về varchar
- 2. Thủ tục lưu trữ trả về nhiều bộ kết quả
- 3. Thủ tục lưu trữ trả về một chuỗi?
- 4. Làm thế nào để gọi Thủ tục lưu trữ (với 2 tham số) trong một thủ tục lưu trữ?
- 5. Làm thế nào để chạy một thủ tục được lưu trữ trong máy chủ sql mỗi giờ?
- 6. Làm thế nào để lưu một thủ tục lưu trữ?
- 7. Lưu trữ SQL Server Thủ tục lưu giữ giá trị trả về trong T-SQL
- 8. Làm thế nào để trả về giá trị từ một thủ tục lưu trữ SQL động vào khung thực thể?
- 9. PDO Lưu trữ thủ tục trả về giá trị
- 10. Làm thế nào để sử dụng đầu ra Bảng từ lưu trữ MYSQL Thủ tục
- 11. Máy chủ SQL: Trả về bộ định danh duy nhất từ thủ tục lưu sẵn
- 12. MS SQL: Loại bỏ giá trị trả về của thủ tục lưu sẵn được gọi trong thủ tục lưu sẵn
- 13. LINQ-to-SQL: Thủ tục lưu trữ trả về một giá trị vô hướng đơn?
- 14. thủ tục lưu trữ trả về không có gì
- 15. Thực hiện một thủ tục lưu sẵn trong một thủ tục lưu sẵn khác trong máy chủ SQL
- 16. Thủ tục lưu sẵn - nhận dạng trả về làm tham số đầu ra hoặc vô hướng
- 17. Làm cách nào để lưu một thủ tục được lưu trữ trong SQL Server 2008 R2?
- 18. Làm thế nào để kiểm tra tất cả các thủ tục lưu trữ là ok trong máy chủ sql?
- 19. Làm thế nào để trả lại một bảng từ một thủ tục lưu trữ?
- 20. Gọi thủ tục lưu trữ từ một thủ tục lưu trữ SQL Server
- 21. Làm thế nào để sử dụng một giá trị từ một thủ tục lưu sẵn trong một thủ tục khác?
- 22. Làm thế nào để mô phỏng một bản in trong một thủ tục lưu trữ MySQL
- 23. SQL Server 2000: Làm thế nào để thoát khỏi một thủ tục được lưu trữ?
- 24. Máy chủ SQL - Có thể thực hiện một thủ tục được lưu trữ
- 25. Làm thế nào để tạo một thủ tục lưu trữ mới trong một gói hiện có
- 26. Làm thế nào để gọi thủ tục lưu sẵn từ một thủ tục lưu sẵn khác?
- 27. làm thế nào để gọi một thủ tục được lưu trữ trong mệnh đề where của SQL
- 28. Làm thế nào tôi có thể chạy các thủ tục lưu trữ máy chủ sql song song?
- 29. Gọi thủ tục lưu trữ trong một thủ tục được lưu trữ trong MySQL
- 30. Làm thế nào để vượt qua udtt thành một thủ tục lưu trữ trong SQL Server Management Studio
gì thủ tục lưu trữ của bạn trở lại? Một giá trị duy nhất? Một bộ kết quả? –