sql >> Database teknologi >  >> RDS >> Sqlserver

Hvordan kalder man Stored Procedure in a View?

Denne konstruktion er ikke tilladt i SQL Server. En indlejret tabelværdi-funktion kan fungere som en parametriseret visning, men har stadig ikke lov til at kalde en SP som denne.

Her er nogle eksempler på at bruge en SP og en inline TVF i flæng - du vil se, at TVF er mere fleksibel (det er dybest set mere som en udsigt end en funktion), så hvor en inline TVF kan bruges, kan de være mere re- eusable:

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. PostgreSQL dato() med tidszone

  2. Oracle Shutdown fejl ORA-01033

  3. Skalering af forbindelser i PostgreSQL ved hjælp af Connection Pooling

  4. Hvordan bruger man en SQL for loop til at indsætte rækker i databasen?