2017-08-05 9 views
2

SSMS 2014を使用していますが、SQL Serverの列名を使用して列の値を取得します。ユーザーは、表から任意の列を選択し、その列の値を取り出すことができます。SQL Serverの列名を使用して列の値を取得します

例:以下の

exec employee Name 'karl' 

出力として:

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

私はこの問題を解決するための手順を作成していますが、私は、出力の任意の値を取得しておりません。

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

出力に値を設定していません。

私がデバッグしているとき、変数は私が提供した値を得ています。

こちらをご覧ください。

ありがとうございます。

+0

[この回答](https://stackoverflow.com/questions/13091505/sql-server-reference-a-column-by-name-in-の底近く技術の例がありますagrregate-function)である。 – wallyk

+1

サイドノート:ストアドプロシージャのプレフィックス 'sp_'を**使用しないでください**。マイクロソフトは、[*ストアドプロシージャの名前付け*を参照してください](http://msdn.microsoft.com/en-us/library/ms190669%28v=sql.105%29.aspx)、およびあなたはいつか名前衝突のリスクを将来実行します。 [ストアドプロシージャのパフォーマンスにも悪い](http://www.sqlperformance.com/2012/10/t-sql-queries/sp_prefix)単に 'sp_'を避け、他の何かを接頭辞として使うのが最善です。 –

答えて

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

うん、あなたは私を打ち負かす。 – wallyk

+0

@wallyk感謝のためにありがとう –

+0

素晴らしい:)それは動作します –

関連する問題