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

すべてのテーブルで CHANGETABLE() を使用する

    私はこの機能に詳しくありませんが、問題が CHANGETABLE() を使用して複数のテーブルをクエリする方法である場合 次に、ストアド プロシージャを使用してすべてのテーブル名をループし、動的 ​​SQL を使用してクエリを実行できると仮定します。

    declare 
        @sql nvarchar(max), 
        @parameters nvarchar(max), 
        @TableName nvarchar(128), 
        @Version bigint
    
    set @Version = CHANGE_TRACKING_CURRENT_VERSION()
    
    declare Tables cursor local fast_forward
    for 
    select name from sys.tables where... -- add conditions here if necessary
    
    open Tables
    fetch next from Tables into @TableName
    while @@fetch_status = 0
    begin
        set @sql = N'select * from CHANGETABLE(CHANGES ' + quotename(@TableName) + ', @LastVersion)ct order by sys_change_version desc'
        set @parameters = N'@LastVersion bigint'
        exec sp_executesql @sql, @parameters, @LastVersion = @Version
        fetch next from Tables into @TableName
    end
    
    close Tables
    deallocate Tables
    

    これを INSERT と組み合わせることができます 動的 SQL で結果をテーブルに書き込み、レポートと分析のためにクエリを実行します。



    1. .NetforMySQLデータベースでの日時のフォーマット

    2. Oracleの同じテーブルの行間の比較

    3. SQLテーブルの条件で列名として列値を選択する方法

    4. ストアドプロシージャのテーブルのリストを取得するにはどうすればよいですか?