By Frank Kalis
Vielfach ist es üblich, dynamisches SQL zu verwenden, wenn eine Prozedur für verschiedene Sortierkriterien verwendet werden soll. Dabei kann dieses dynamische SQL relativ einfach vermieden werden.
USE PUBS
GO
IF OBJECT_ID('test_me') IS NOT NULL
DROP PROCEDURE test_me
GO
CREATE PROCEDURE test_me
@ORDER_CRITERIA INT,
@ORDER_DIRECTION INT
AS
IF @ORDER_DIRECTION = 1
BEGIN
SELECT
*
FROM
authors
ORDER BY
CASE @ORDER_CRITERIA
WHEN 1 THEN au_lname
WHEN 2 THEN au_fname
END
DESC
END
ELSE
SELECT
au_lname
, au_fname
FROM
authors
ORDER BY
CASE @ORDER_CRITERIA
WHEN 1 THEN au_lname
WHEN 2 THEN au_fname
END
GO
EXEC test_me 2,2
DROP PROCEDURE test_me
au_lname au_fname
---------------------------------------- --------------------
Bennet Abraham
Yokomoto Akiko
Ringer Albert
Dull Ann
Ringer Anne
Gringlesby Burt
Locksley Charlene
Carson Cheryl
Straight Dean
Stringer Dirk
McBadden Heather
del Castillo Innes
White Johnson
Karsen Livia
Green Marjorie
Smith Meander
O'Leary Michael
DeFrance Michel
Greene Morningstar
Blotchet-Halls Reginald
Hunter Sheryl
MacFeather Stearns
Panteley Sylvia
(23 row(s) affected)
wobei man < @ORDER_CRITERIA > und < @ORDER_DIRECTION > als Inputparameter der Stored Procedure übergibt.