sql >> Database >  >> RDS >> Sqlserver

Hoe kan ik Opgeslagen procedure in een weergave aanroepen?

Deze constructie is niet toegestaan ​​in SQL Server. Een inline-tabelwaardefunctie kan optreden als een geparametriseerde weergave, maar het is nog steeds niet toegestaan ​​om een ​​SP op deze manier aan te roepen.

Hier zijn enkele voorbeelden van het door elkaar gebruiken van een SP en een inline TVF - u zult zien dat de TVF flexibeler is (het is eigenlijk meer een weergave dan een functie), dus waar een inline TVF kan worden gebruikt, kunnen ze meer re- bruikbaar:

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. Wat is de beste manier om de SQL Server-verbinding programmatisch te testen?

  2. Het MySQL-rootgebruikerswachtwoord instellen op OS X

  3. Fouten met gekoppelde servers ondervangen

  4. Ubuntu 18.04 voor SQL Server 2019 op virtuele machine installeren met VMware Workstation