Làm cách nào tôi có thể 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? Làm cách nào để chuyển các tham số của quy trình thứ hai.?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
Trả lời
Bạn có thể gọi hàm do người dùng định nghĩa trong một thủ tục lưu trữ luân phiên
điều này có thể giải quyết vấn đề của bạn để gọi thủ tục lưu trữ
Có, bạn có thể làm điều đó như thế này:
BEGIN
DECLARE @Results TABLE (Tid INT PRIMARY KEY);
INSERT @Results
EXEC Procedure2 [parameters];
SET @total 1;
END
SELECT @total
Nếu bạn chỉ muốn thực hiện một số hoạt động cụ thể bởi SP thứ hai của bạn và không yêu cầu giá trị từ SP sau đó chỉ cần thực hiện:
Exec secondSPName @anyparams
Khác, nếu bạn cần giá trị trả về bởi SP thứ hai của bạn bên trong đầu tiên, sau đó tạo một biến bảng tạm thời với số cột bằng nhau và cùng định nghĩa cột trả về bởi SP thứ hai. Sau đó, bạn có thể nhận được những giá trị trong SP đầu tiên như:
Insert into @tep_table
Exec secondSPName @anyparams
Cập nhật:
Để vượt qua tham số để sp thứ hai, làm như sau:
Declare @id ID_Column_datatype
Set @id=(Select id from table_1 Where yourconditions)
Exec secondSPName @id
Cập nhật 2:
Giả sử lần trả về thứ hai của bạn là Id
và Name
trong đó loại id
là int
và name
thuộc loại varchar(64)
.
bây giờ, nếu bạn muốn chọn những giá trị trong sp đầu tiên sau đó tạo ra một tạm thời table
giá trị biến và chèn vào nó:
Declare @tep_table table
(
Id int,
Name varchar(64)
)
Insert into @tep_table
Exec secondSP
Select * From @tep_table
này sẽ trả lại cho bạn những giá trị được trả về bởi SP thứ hai.
Hy vọng, điều này rõ ràng tất cả những nghi ngờ của bạn.
tanx .. ya i cần các giá trị được trả về bởi sp thứ hai bên trong sp thứ nhất. bt các tham số mà tôi cần phải vượt qua là một đầu ra của thủ tục đầu tiên. là nó có thể.? Xin xem ví dụ này. SP1 Chọn id từ bảng_1. là nó có thể vượt qua id này như là tham số của thủ tục thứ hai.? – Roys
Có điều này là posible nhưng trước tiên bạn cần phải lưu trữ id này vào một biến và sau đó vượt qua cùng với sp thứ hai. Xem câu trả lời được cập nhật. –
Các bước trên làm việc.tanx. Làm thế nào tôi có thể nhận được giá trị đầu ra của Sp thứ hai từ lần đầu tiên ..? – Roys
Giả sử bạn có một thủ tục lưu trữ như
thủ tục lưu trữ đầu tiên này:
Create PROCEDURE LoginId
@UserName nvarchar(200),
@Password nvarchar(200)
AS
BEGIN
DECLARE @loginID int
SELECT @loginID = LoginId
FROM UserLogin
WHERE UserName = @UserName AND Password = @Password
return @loginID
END
Bây giờ bạn muốn gọi thủ tục này từ một thủ tục lưu trữ như như dưới đây
thủ tục lưu trữ Second
Create PROCEDURE Emprecord
@UserName nvarchar(200),
@Password nvarchar(200),
@Email nvarchar(200),
@IsAdmin bit,
@EmpName nvarchar(200),
@EmpLastName nvarchar(200),
@EmpAddress nvarchar(200),
@EmpContactNo nvarchar(150),
@EmpCompanyName nvarchar(200)
AS
BEGIN
INSERT INTO UserLogin VALUES(@UserName,@Password,@Email,@IsAdmin)
DECLARE @EmpLoginid int
**exec @EmpLoginid= LoginId @UserName,@Password**
INSERT INTO tblEmployee VALUES(@EmpName,@EmpLastName,@EmpAddress,@EmpContactNo,@EmpCompanyName,@EmpLoginid)
END
Như bạn đã thấy ở trên, chúng tôi có thể cal l một thủ tục lưu trữ từ một
bạn sp_test: Return FullName
USE [MY_DB]
GO
IF (OBJECT_ID('[dbo].[sp_test]', 'P') IS NOT NULL)
DROP PROCEDURE [dbo].sp_test;
GO
CREATE PROCEDURE [dbo].sp_test
@name VARCHAR(20),
@last_name VARCHAR(30),
@full_name VARCHAR(50) OUTPUT
AS
SET @full_name = @name + @last_name;
GO
Trong sp_main bạn
...
DECLARE @my_name VARCHAR(20);
DECLARE @my_last_name VARCHAR(30);
DECLARE @my_full_name VARCHAR(50);
...
EXEC sp_test @my_name, @my_last_name, @my_full_name OUTPUT;
...
Vâng, của nó dễ dàng để cách chúng ta gọi hàm bên trong cửa hàng thủ tục.
ví dụ: tạo người dùng định nghĩa hàm Age và sử dụng trong truy vấn chọn.
select dbo.GetRegAge(R.DateOfBirth, r.RegistrationDate) as Age,R.DateOfBirth,r.RegistrationDate from T_Registration R
- 1. Thực hiện một thủ tục được lưu trữ trong một thủ tục lưu sẵn
- 2. 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?
- 3. Thủ tục lưu trữ thực hiện một thủ tục lưu sẵn
- 4. Gọi thủ tục lưu sẵn với asp.net
- 5. 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
- 6. TSQL: Gọi thủ tục lưu sẵn từ một thủ tục lưu sẵn khác và đọc kết quả
- 7. Cách lấy lỗi sql trong thủ tục lưu sẵn
- 8. Gọi thủ tục lưu sẵn của Oracle trong Squirrel SQL
- 9. Ném ngoại lệ trong thủ tục lưu sẵn SQL CLR
- 10. Sự khác biệt giữa các thủ tục lưu sẵn và các thủ tục lưu sẵn mở rộng
- 11. tạo thủ tục lưu sẵn nếu không tồn tại trong máy chủ sql
- 12. 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?
- 13. Cách sao lưu các thủ tục lưu sẵn trong MySQL
- 14. Tìm các thủ tục lưu sẵn có quyền thực thi
- 15. Các câu lệnh sau END trong thủ tục lưu sẵn
- 16. Tạo một thủ tục lưu sẵn qua C#
- 17. Vượt qua mảng vào một thủ tục lưu sẵn
- 18. Các bảng tạm thời trong các thủ tục lưu sẵn
- 19. Sử dụng thủ tục lưu sẵn trong Rails
- 20. thủ tục lưu sẵn với số tham số khác nhau
- 21. Gọi thủ tục lưu trữ từ một thủ tục lưu trữ SQL Server
- 22. Cách thực hiện một thủ tục lưu sẵn trong chương trình C#
- 23. Cách lập lịch thủ tục lưu sẵn trong MySQL
- 24. Tạo thủ tục lưu sẵn trong MS Access?
- 25. Câu lệnh Firebird CASE bên trong thủ tục lưu sẵn
- 26. Gọi thủ tục lưu sẵn trong mã vạch
- 27. Máy chủ SQL: Trả về bộ định danh duy nhất từ thủ tục lưu sẵn
- 28. Lỗi cú pháp SQL khi tạo một thủ tục lưu sẵn trong MYSQL
- 29. Oracle: Thủ tục lưu sẵn Java gửi thông báo JMS
- 30. Làm thế nào để thực hiện thủ tục lưu sẵn từ SQL Plus?
Bạn có dự định thực hiện việc này trong C# hoặc dưới dạng StoredProc trên chính Máy chủ không? – MethodMan
sử dụng từ khóa 'exec'. – Matthew
Tôi cần phải thực thi trong Máy chủ chính nó – Roys