テーブル名でレコードを更新するためのストアドプロシージャ

アンキットクマール

TableA、TableB、TableCなどの複数のテーブルを持つデータベースがあり、Watermarktableというテーブルもあるというシナリオがあります。すべてのテーブル(TableA、TableB ...)には、DateLoadedとして列があります。

テーブル名(TableA、TableB ...)とDateLoaded(TableA、TableB ...の場合)の値を同じデータベースのウォーターマークテーブルに保存しています。

テーブル名とDateLoadedの行を持つウォーターマークテーブル。したがって、テーブル(TableA、TableB ...)が新しいDateLoaded値で更新されるたび
に、ウォーターマークテーブルの値も対応するテーブルで変更されるはずです。これを実現するための簡単なストアドプロシージャを探しています。ありがとう

どうぞ :

開始

TableA                        TableB                              TableC

Col1 Col2 LoadDate     Col1 Col2 LoadDate           Col1 Col2 Loaddate
r1    r1   01/01/2019    rs1   rs1  01/02/2019         ra1    ra1   01/01/2019
r2    r2   01/01/2019    rs2    rs2   01/02/2019       ra2    ra2   01/01/2019

透かしテーブル:

Table Name       DateLoaded
TableA             01/01/2019
TableB             01/02/2019
TableC             01/01/2019

明日、新しいデータがテーブルAとBにある場合、透かしテーブルは次のようになります。

Table Name       DateLoaded
TableA             12/31/2019
TableB             12/31/2019
TableC             01/01/2019   

ここでの注意:DateLoadedは、テーブル全体で同じままです。行によって違いはありません。再度、感謝します

マハディラヒミ|

このコードをspとして使用できますが、テーブルとスキーマ名には注意してください。

私はあなたの問題のように私のコードを書こうとしました

DECLARE @TableName NVARCHAR(50)

CREATE TABLE #LocalDateTBL
(
TableName nvarchar(50),
LoadDate datetime
)

DECLARE TBL_Cursor CURSOR 
FOR
SELECT '['+S.NAME+'].'+'['+T.NAME+']'
FROM SYS.TABLES T
INNER JOIN SYS.SCHEMAS S ON T.SCHEMA_ID = S.SCHEMA_ID
WHERE TYPE='U'


OPEN TBL_Cursor

FETCH NEXT FROM TBL_Cursor
INTO @TableName

WHILE @@FETCH_STATUS = 0
BEGIN


    DECLARE @Command NVARCHAR(MAX)

    SET @Command = 'INSERT INTO #LocalDateTBL SELECT '+CHAR(39)+ @TableName +CHAR(39)+', MAX(LoadDate) FROM '+@TableName

    PRINT(@Command)

    --EXEC(@Command)

FETCH NEXT FROM TBL_Cursor
INTO @TableName
END
CLOSE TBL_Cursor
DEALLOCATE TBL_Cursor



UPDATE C
SET C.LoadDate = T.LoadDate
FROM WaterMark C
INNER JOIN #LocalDateTBL T ON C.TableName = T.TableName



DROP TABLE #LocalDateTBL

このコードは、データベースのforeachテーブルから最大LoadDateを取得するためのクエリを生成し、一時テーブルに日付を挿入し、一時テーブルからウォーターマークテーブルを更新します。

テーブル名の代わりに、ウォーターマークテーブルの各テーブルのobject_idを使用することをお勧めします。

必要に応じて、このソリューションのウォーターマークテーブルに新しいテーブルを追加するための新しいビジネスを追加できます

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ワードタグテーブルで一致するレコードを検索するためのsql /ストアドプロシージャ

分類Dev

ストアドプロシージャを実行するためのテンプレートコード

分類Dev

レコードを更新するためのMySQLストアドプロシージャの作成

分類Dev

誤った構文エラーでSQLServer2012のテーブルを更新するためのSQLServerストアドプロシージャ

分類Dev

Employeeテーブルを更新するためのストアドプロシージャを作成するにはどうすればよいですか?

分類Dev

ストアドプロシージャで動的名前テーブルを更新する

分類Dev

MySQLで親を更新するためのストアドプロシージャ

分類Dev

SQLServerで値が重複しているテーブルの行を更新するためのストアドプロシージャ

分類Dev

2つの異なるデータベースPL / SQLの2つのテーブルで一致するレコードをチェックするためのストアドプロシージャ

分類Dev

テーブル内のすべてのNULL値をストアドプロシージャで埋める方法

分類Dev

ストアドプロシージャで同じ名前の一時テーブルを使用する

分類Dev

SQL Server2012のストアドプロシージャでテーブル名を動的に指定する方法

分類Dev

ストアドプロシージャからテーブルを更新する

分類Dev

リモートSQLサーバーに接続するためのvbaコードを作成し、accdbファイルのテーブルを更新するストアドプロシージャを実行します

分類Dev

別のテーブルのレコードに基づいてテーブルにレコードを挿入するためのSQLプロシージャ

分類Dev

次のプログレッシブIDを取得するためのストアドプロシージャ

分類Dev

mysqlストアドプロシージャでループするための変数としてテーブルを渡す

分類Dev

ストアドプロシージャの値でトリガーのテーブルを更新します

分類Dev

ストアドプロシージャを呼び出してテーブルのNullレコードを更新すると、エラーがスローされます 'サブクエリが複数の値を返しました'

分類Dev

複数のテーブルから選択するためのストアドプロシージャ

分類Dev

ストアドプロシージャ=>新しいデータでテーブルを更新する

分類Dev

テーブルの作成操作のためにSQLServer 2014でストアドプロシージャを作成するにはどうすればよいですか?

分類Dev

すべてのアイテムのフィールドを更新するためのAzureCosmosDBストアドプロシージャ

分類Dev

動的テーブル名とwhere句のストアドプロシージャを使用したループ

分類Dev

すでにテーブルにある値をチェックするためのストアドプロシージャ

分類Dev

caseステートメントで列を更新するためのストアドプロシージャを作成する

分類Dev

MySqlストアドプロシージャを実行するための最小アクセスレベル

分類Dev

1つのストアドプロシージャで複数のテーブルとストアドプロシージャを作成する方法

分類Dev

1つのストアドプロシージャで複数のテーブルとストアドプロシージャを作成する方法

Related 関連記事

  1. 1

    ワードタグテーブルで一致するレコードを検索するためのsql /ストアドプロシージャ

  2. 2

    ストアドプロシージャを実行するためのテンプレートコード

  3. 3

    レコードを更新するためのMySQLストアドプロシージャの作成

  4. 4

    誤った構文エラーでSQLServer2012のテーブルを更新するためのSQLServerストアドプロシージャ

  5. 5

    Employeeテーブルを更新するためのストアドプロシージャを作成するにはどうすればよいですか?

  6. 6

    ストアドプロシージャで動的名前テーブルを更新する

  7. 7

    MySQLで親を更新するためのストアドプロシージャ

  8. 8

    SQLServerで値が重複しているテーブルの行を更新するためのストアドプロシージャ

  9. 9

    2つの異なるデータベースPL / SQLの2つのテーブルで一致するレコードをチェックするためのストアドプロシージャ

  10. 10

    テーブル内のすべてのNULL値をストアドプロシージャで埋める方法

  11. 11

    ストアドプロシージャで同じ名前の一時テーブルを使用する

  12. 12

    SQL Server2012のストアドプロシージャでテーブル名を動的に指定する方法

  13. 13

    ストアドプロシージャからテーブルを更新する

  14. 14

    リモートSQLサーバーに接続するためのvbaコードを作成し、accdbファイルのテーブルを更新するストアドプロシージャを実行します

  15. 15

    別のテーブルのレコードに基づいてテーブルにレコードを挿入するためのSQLプロシージャ

  16. 16

    次のプログレッシブIDを取得するためのストアドプロシージャ

  17. 17

    mysqlストアドプロシージャでループするための変数としてテーブルを渡す

  18. 18

    ストアドプロシージャの値でトリガーのテーブルを更新します

  19. 19

    ストアドプロシージャを呼び出してテーブルのNullレコードを更新すると、エラーがスローされます 'サブクエリが複数の値を返しました'

  20. 20

    複数のテーブルから選択するためのストアドプロシージャ

  21. 21

    ストアドプロシージャ=>新しいデータでテーブルを更新する

  22. 22

    テーブルの作成操作のためにSQLServer 2014でストアドプロシージャを作成するにはどうすればよいですか?

  23. 23

    すべてのアイテムのフィールドを更新するためのAzureCosmosDBストアドプロシージャ

  24. 24

    動的テーブル名とwhere句のストアドプロシージャを使用したループ

  25. 25

    すでにテーブルにある値をチェックするためのストアドプロシージャ

  26. 26

    caseステートメントで列を更新するためのストアドプロシージャを作成する

  27. 27

    MySqlストアドプロシージャを実行するための最小アクセスレベル

  28. 28

    1つのストアドプロシージャで複数のテーブルとストアドプロシージャを作成する方法

  29. 29

    1つのストアドプロシージャで複数のテーブルとストアドプロシージャを作成する方法

ホットタグ

アーカイブ