Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Wykonaj procedurę składowaną w bloku OUTER APPLY

Procedura składowana nie jest przeznaczona do tego rodzaju zastosowań, ponieważ może wykonywać operacje inne niż wybieranie danych, może działać bez zwracania danych lub może zwracać różne zestawy w różnych scenariuszach.

W przeciwieństwie do procedur składowanych, funkcje są dokładnie dostosowane do użycia w połączeniu z innymi zapytaniami.

Masz dwie opcje:

A) Utwórz funkcję skalarną, która zwróci tylko TeacherID i użyj go w swoim WHERE

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) Utwórz funkcję o wartościach w tabeli, która dostarczy Ci wszystkich potrzebnych danych i możesz po prostu dołączyć (zastosować) do niej.

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

Oto trochę czytania:Różnica między procedurą składowaną a funkcją w serwerze SQL




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Uzyskaj określony dzień tygodnia w ciągu tygodnia podany przez DATETIME

  2. odległość między dwoma długościami i szerokościami geograficznymi

  3. Konwertuj milisekundy UTC na DATETIME w serwerze SQL

  4. SQL Server odpowiednik MySQL EXPLAIN

  5. Nieemocjonalne logiczne spojrzenie na konwencje nazewnictwa SQL Server