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.