2017-08-05 2 views
2

Ich verwende SSMS 2014, ich möchte den Spaltenwert mithilfe des Spaltennamens in SQL Server abrufen. Der Benutzer kann eine beliebige Spalte aus der Tabelle auswählen und den Wert dieser Spalte abrufen.Abrufen des Spaltenwerts mithilfe des Spaltennamens in SQL Server

Beispiel:

exec employee Name 'karl' 

Ausgabe wie folgt:

| Id | Name | ManagerId | ManagerName | Gender | Dept | 
| 5 | Karl | 1  | Luke  | M | 1 | 

I Verfahren erschaffe dieses Problem zu beheben, aber ich bin kein Wert in der Ausgabe zu bekommen.

Create proc sp_getEmpDetail 
    @colname varchar(50), 
    @colvalue varchar(50) 
as 
    Select * 
    from employees1 
    where @colname = @colvalue 

Ich bekomme keinen Wert in der Ausgabe.

Wenn ich es debugge dann Variablen erhalten Wert, den ich geliefert habe.

Bitte helfen Sie, dies zu beheben.

Vielen Dank im Voraus.

+0

Es ist ein Beispiel für die Technik am unteren Rand der [diese Antwort] (https://stackoverflow.com/questions/13091505/sql-server-reference-a-column-by-name-in- Agrrate-Funktion). – wallyk

+1

Randnotiz: Sie sollten ** nicht ** das Präfix 'sp_' für Ihre gespeicherten Prozeduren verwenden. Microsoft hat [dieses Präfix für seine eigene Verwendung reserviert (siehe * Gespeicherte Prozeduren benennen *)] (http://msdn.microsoft.com/en-us/library/ms190669%28v=sql.105%29.aspx), und Sie riskieren irgendwann in der Zukunft einen Namenskonflikt. [Es ist auch schlecht für die Leistung Ihrer gespeicherten Prozedur] (http://www.sqlperformance.com/2012/10/t-sql-queries/sp_prefix). Es ist am besten, einfach 'sp_' zu vermeiden und etwas anderes als Präfix zu verwenden - oder gar kein Präfix! –

Antwort

3
--for this you need to create a dynamic Query 

Create proc sp_getEmpDetail 
@colname varchar(50), 
@colvalue varchar(50) 
AS 
    DECLARE @Sql_String NVARCHAR(MAX) 

    SET @Sql_String='Select * from employees1 where '[email protected]+' = '''[email protected]+'''' 
    PRINT @Sql_String 
    EXEC(@Sql_String) 
END 
+0

Ja, du hast mich geschlagen. – wallyk

+0

@wallyk Vielen Dank für die Wertschätzung –

+0

Großartig :) es funktioniert –

Verwandte Themen