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

Jak wywołać procedurę składowaną w widoku?

Ta konstrukcja nie jest dozwolona w SQL Server. Wbudowana funkcja z wartościami tabeli może działać jako widok sparametryzowany, ale nadal nie może wywoływać SP w ten sposób.

Oto kilka przykładów wymiennego używania SP i wbudowanego TVF — zobaczysz, że TVF jest bardziej elastyczny (w zasadzie bardziej przypomina widok niż funkcję), więc tam, gdzie można użyć wbudowanego TVF, można je bardziej ponownie nadające się do użytku:

CREATE TABLE dbo.so916784 (
    num int
)
GO

INSERT INTO dbo.so916784 VALUES (0)
INSERT INTO dbo.so916784 VALUES (1)
INSERT INTO dbo.so916784 VALUES (2)
INSERT INTO dbo.so916784 VALUES (3)
INSERT INTO dbo.so916784 VALUES (4)
INSERT INTO dbo.so916784 VALUES (5)
INSERT INTO dbo.so916784 VALUES (6)
INSERT INTO dbo.so916784 VALUES (7)
INSERT INTO dbo.so916784 VALUES (8)
INSERT INTO dbo.so916784 VALUES (9)
GO

CREATE PROCEDURE dbo.usp_so916784 @mod AS int
AS 
BEGIN
    SELECT  *
    FROM    dbo.so916784
    WHERE   num % @mod = 0
END
GO

CREATE FUNCTION dbo.tvf_so916784 (@mod AS int)
RETURNS TABLE
    AS
RETURN
    (
     SELECT *
     FROM   dbo.so916784
     WHERE  num % @mod = 0
    )
GO    

EXEC dbo.usp_so916784 3
EXEC dbo.usp_so916784 4

SELECT * FROM dbo.tvf_so916784(3)    
SELECT * FROM dbo.tvf_so916784(4)

DROP FUNCTION dbo.tvf_so916784
DROP PROCEDURE dbo.usp_so916784
DROP TABLE dbo.so916784


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Różne sposoby monitorowania zawsze włączonych grup dostępności programu SQL Server

  2. Jak usunąć bazę danych za pomocą TSQL i GUI — SQL Server / samouczek TSQL część 25

  3. Atomic UPSERT w SQL Server 2005

  4. Jak zwiększyć dopuszczalny rozmiar załącznika podczas wysyłania wiadomości e-mail w programie SQL Server (T-SQL)

  5. Jak dynamicznie mapować kolumny wejściowe i wyjściowe w SSIS?