0

私はテーブルを持っています

 EmpId  FirstName       LastName     Domain Vertical    Account City
 ----------------------------------------------------------------------------------
 345    Priya            Palanisamy DotNet  LS  Abbott  Chennai
 346    Kavitha     Amirtharaj DotNet   CG  Diageo  Chennai
 647       Kala          Haribabu     DotNet    IME IMS Chennai

特定の列を動的に取得したい.次の手順を使用していますが、一度に1列しか取得できません..

    create PROC columnlist
    (
    @COLUMNS VARCHAR(1000)
    )
    AS
    BEGIN
    DECLARE @sql nvarchar(max) = 'SELECT '+ @COLUMNS + ' FROM Table';
    exec sp_executesql @sql,N''

    END

このプロシージャにパラメータとしてコンマ区切りの値を渡したいのですが、私の質問は、テーブルの列を動的に取得する方法です。

4

2 に答える 2

3

試す

CREATE PROCEDURE columnlist
(
  @COLUMNS VARCHAR(MAX)
)
AS
BEGIN
  DECLARE @sql VARCHAR(MAX)
  SET @sql = 'SELECT '+ @COLUMNS + ' FROM Table1'
  EXECUTE(@sql)
END

これを使って

EXECUTE columnlist 'FirstName, LastName'

これがSQLFiddleのデモです

于 2013-06-27T04:48:23.977 に答える
2

これを試してみてください -

クエリ

ALTER FUNCTION dbo.udf_GetTableColumns
(
    @Table NVARCHAR(100)
)
RETURNS DATETIME
AS
BEGIN

    DECLARE @cols NVARCHAR(MAX)

     SELECT @cols = STUFF((
          SELECT ', [' + c.name + ']' 
          FROM sys.columns c WITH(NOWAIT)
          WHERE c.[object_id] = OBJECT_ID(@Table)
          FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 2, '')

     RETURN @cols

END

エグゼクティブ

SELECT dbo.udf_GetTableColumns('dbo.Table')
于 2013-06-27T04:48:15.703 に答える