具有纯选择结果的SQL函数

时间:2017-03-13 23:09:22

标签: sql sql-server database sql-server-2012

起初我应该说我是SQL函数或存储过程的新手,我想知道如何创建一个sql函数或存储过程和一些过滤器和排序过程,但至少它只返回一个纯选择而不显示过滤器和排序

我的意思是我想创建类似这个功能的东西:

function {
SELECT * FROM Customers
Where (ID = @p1)
ORDER BY @P2 DESC;
}

但它只返回这个选择推荐给我:

SELECT * FROM Customers

但它返回的内容已经过滤和排序。

我该怎么做?我应该用函数或存储过程来做这个吗?

1 个答案:

答案 0 :(得分:1)

您可以使用存储过程或表值函数:

CREATE PROCEDURE MyProc @P1 int, @P2 int as
BEGIN
    SELECT FirstName, LastName, LastOrderNum, LastPurchaseDate
    FROM Customers
    WHERE ID = @P1
    ORDER BY CASE WHEN @P2 = 0 THEN LastName ELSE LastPurchaseDate END DESC;
END
  

用法:exec MyProc 10, 1;

或者:

CREATE FUNCTION my_schema.MyTableFun (@P1 int, @P2 int) 
RETURNS TABLE
AS
RETURN
    SELECT TOP 100 PERCENT FirstName, LastName, LastOrderNum, LastPurchaseDate
    FROM Customers
    WHERE ID = @P1
    ORDER BY CASE WHEN @P2 = 0 THEN LastName ELSE LastPurchaseDate END DESC;
  

用法:       SELECT * FROM my_schema.MyTableFun(10, 1);