Dynamisches ORDER BY Kriterium

By Frank Kalis

Posted on Jul 13, 2004 von in SQL Server

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.

Tags: Tags:
Dieser Eintrag wurde eingetragen von und ist abgelegt unter SQL Server. Tags: , ,

Noch kein Feedback


Formular wird geladen...