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

Làm thế nào để gọi Thủ tục đã lưu trong Chế độ xem?

Cấu trúc này không được phép trong SQL Server. Một hàm có giá trị bảng nội tuyến có thể hoạt động như một dạng xem được tham số hóa, nhưng vẫn không được phép gọi một SP như thế này.

Dưới đây là một số ví dụ về việc sử dụng SP và TVF nội tuyến thay thế cho nhau - bạn sẽ thấy rằng TVF linh hoạt hơn (về cơ bản nó giống như một chế độ xem hơn là một chức năng), vì vậy khi một TVF nội tuyến có thể được sử dụng, chúng có thể dễ dàng hơn có thể sử dụng được:

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. Sử dụng giao dịch ROLLBACK trong SQL Server

  2. Truy vấn SQL để chọn một chuỗi giữa hai chuỗi đã biết

  3. Sự khác biệt giữa các phép chuyển đổi Kết hợp Tham gia và Tra cứu trong SSIS là gì?

  4. Làm cách nào để kiểm tra xem một chuỗi có phải là mã định danh duy nhất hay không?

  5. CURRENT_TIMESTAMP Ví dụ trong SQL Server (T-SQL)