起初我应该说我是SQL函数或存储过程的新手,我想知道如何创建一个sql函数或存储过程和一些过滤器和排序过程,但至少它只返回一个纯选择而不显示过滤器和排序
我的意思是我想创建类似这个功能的东西:
function {
SELECT * FROM Customers
Where (ID = @p1)
ORDER BY @P2 DESC;
}
但它只返回这个选择推荐给我:
SELECT * FROM Customers
但它返回的内容已经过滤和排序。
我该怎么做?我应该用函数或存储过程来做这个吗?
答案 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);