sql >> データベース >  >> RDS >> Sqlserver

テーブル名を文字列として指定する方法はありますか?

    次のようにEXECステートメントでラップできます:

    declare @my_tablename nvarchar(100) = 'mytable';
    exec('
    SELECT * FROM 
    (
      SELECT * FROM 
      (
        SELECT * FROM ' + @my_tablename + '
      )
      INNER JOIN ' + @my_tablename + ' ON ...'
    );
    

    ただし、そのシナリオではインテリセンスは機能しません。

    出力がどのようになるかを事前に知っている場合は、結果を保持するための一時テーブルを宣言して、EXECなしでそれにアクセスできます。一時テーブルにインテリセンスがあります。

    例:

      --this must match whatever your SELECT is going to return
      CREATE TABLE #results(
        FIELD1 INT
       ,FIELD2 NVARCHAR(100)
       ,FIELD3 BIT
       );
    
    EXEC('
      INSERT INTO #results(field1,field2,field3)
      SELECT FIELD1,FIELD2,FIELD3 FROM ' + @my_tablename
    );
    
    select * from #results  --you will have intellisense on #results
    


    1. iPhoneアプリ(iOS SDK)をphp/MySqlバックエンドに接続するための最良の方法は何ですか

    2. MySQLビューにデータを挿入することは可能ですか?

    3. Postgresql:日付形式とローカル言語の出力

    4. ORA-00054:リソースがビジーで、NOWAITが指定されているか、タイムアウトが期限切れになっています。