2016-06-13 3 views
0

DB内のすべてのテーブルを調べてレコードのクエリを実行する必要があるポイント現在のdatetime(datetimeは以前にenddateとしてテーブルに格納されています)に一致します。sql DB内のすべてのテーブルをループして、現在の日時を異なるテーブルに持つレコードに対して操作を実行したい

ので、私はテーブルが'%_PHGH_LINK_DETAILS'のような名前を持っている私のDB内のテーブルの数を持って、各テーブルの起動はusername
EXです:ユーザ名はジョンであるならば、テーブル名がjohn_PHGH_LINK_DETAILSです

&はすべてenddateからcurrent dateに一致するレコードを取得します。 enddatecurrent datetimeに一致するレコードは、同じレコードが別のxyzテーブルに挿入されて更新されます。&私はイベントでこのquerforyを入れたいので、特定の時間間隔の後にすべてのテーブルをチェックし続けます。誰かが私にコードを案内してください。

+0

MySqlまたはSQL Serverですか?それらは2つの異なる製品です。 –

+0

また、いくつかの例に関連する異なる日付のいくつかのサンプルスキーマを表示する必要があります – TheGameiswar

+0

それはSQL Server 2008です –

答えて

0

あなたは完全な答えを出すのに十分な詳細を提供していませんでした。データベース内のすべてのテーブルの上に

EXEC sp_MSforeachtable 
' 
DECLARE @DateTimeToSearch datetime = GETDATE() 

IF ''?'' LIKE ''%_PHGH_LINK_DETAILS%'' 
BEGIN 
    SELECT * FROM ? WHERE enddate = @DateTimeToSearch 
END 
' 

sp_MSforeachtableループ:それを行うための1つの方法は、このような何かを行うことです。テーブルの名前は、プレースホルダー?に置き換えられます。

+0

それは動作しているようだが、突然実行すると、すべてのテーブルを検索し、メッセージ207、レベル16、状態1、行6のようなエラーを表示する。 無効な列名 'date_time'。 msg 207、レベル16、状態1、行6 'date_time'列名が無効です。 msg 207、レベル16、状態1、行6 'date_time'列名が無効です。 msg 207、レベル16、状態1、行6 'date_time'列名が無効です。 msg 207、レベル16、状態1、行6 'date_time'列名が無効です。 なぜそれはそうです???? date_timeカラムはdatetimeデータ型を持つこれらのテーブルに存在します。 –

関連する問題