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

Thực thi quy trình được lưu trữ trong khối ÁP DỤNG NGOÀI TRỜI

Quy trình đã lưu trữ không được thiết kế cho kiểu sử dụng đó, vì nó có thể thực hiện các thao tác khác sau đó chọn dữ liệu, nó có thể hoạt động mà không cần trả lại dữ liệu hoặc có thể trả về các tập hợp khác nhau trong các tình huống khác nhau.

Không giống như các thủ tục được lưu trữ, các hàm hoàn toàn phù hợp để được sử dụng nội tuyến với các truy vấn khác.

Bạn có hai lựa chọn:

A) Tạo một hàm vô hướng sẽ chỉ trả về một TeacherID và sử dụng nó trong WHERE của bạn

CREATE FUNCTION udfGetTeacherID
(
    @lessonId int, @groupId int
)
RETURNS int
AS
BEGIN

    DECLARE @teacherId INT;

    SELECT @teacherId = GroupTeachers.TeacherId
    FROM GroupTeachers
    WHERE [email protected] AND [email protected];


    RETURN @teacherId;

END
GO

B) Tạo hàm giá trị bảng có thể cung cấp cho bạn tất cả dữ liệu cần thiết và bạn chỉ có thể tham gia (áp dụng) vào nó.

CREATE FUNCTION udfGetTeacherName
(
    @lessonId int, @groupId int
)
RETURNS TABLE 
AS
RETURN 
(
    SELECT t.TeacherLastName, t.TeacherFirstName, t.TeacherMiddleName
    FROM Teachers t
    INNER JOIN GroupTeachers g ON  T.TeacherID = g.TeacherID
    WHERE [email protected] AND [email protected]
)
GO

Đây là một số bài đọc: Sự khác biệt giữa Thủ tục được Lưu trữ và Chức năng trong SQL Server




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tạo một dạng xem trong SQL Server 2017

  2. Khôi phục cơ sở dữ liệu SQL Server - Khóa chính không mở

  3. SQL Server 2008 - thực hiện các truy vấn song song

  4. Tôi có cần một đối tượng Dịch vụ không?

  5. Làm cách nào để chỉ lặp qua các tệp không tồn tại ở đích bằng gói SSIS?