すべての列がユーザー 'A'の行を形成し、ユーザー 'B'の行にそれらを定義せずにコピーすることができるSQL照会を実行できますか列名。同じデータを持つSQL行をレプリケートしますが、すべての列を定義していません
例では、これは高速または強力なデータには反しませんが、これらのタスクを重複して繰り返し実行するのではなく機能的にするのに役立ちます。ベースユーザとターゲットユーザのパラメータは、ストアドプロシージャのパラメータになります。
Declare @BaseUserId varchar(50),
@TargetUserId varchar(50),
@ColumnName varchar(100)
Declare columnNameCursor Cursor For SELECT c.name
FROM sys.columns c
WHERE c.object_id = OBJECT_ID('dbo.EmployeeMenuAccess')
--Opens the cursor now for loop reading
Open columnNameCursor
Fetch next From columnNameCursor into @ColumnName
While @@Fetch_Status=0 Begin
update DocSS set @ColumnName = (select @ColumnName from DocSS where
Username = @BaseUserId) where Username = @TargetUserID
Fetch next From c into @ColumnName
End
Close columnNameCursor
Deallocate columnNameCursor
ありがとうございます。
を試してみて、あなたが挿入または更新のためにそれが必要なのですか? –
これは、私たちがたくさんのユーザーを複製するためですが、バッチスクリプトや手作業を簡単に作成するために十分なユーザーが統一された設定をしていないためです。また、すべてのビットスイッチの列が多い他のテーブルもあります。だから私はこれを簡単にする方法を見つけると、それらを比較しようとするときに1つのバイスイッチを欠落する傾向が少ないだけでなく、我々は他の多くのスクリプトと同様に呼び出すことができる関数にする。 – Casey
を更新し、場合によっては挿入します。現時点で更新に集中する必要があるのは、アカウントの設定時にフィールドがデフォルトで入力された後に行われるためです。そのため、更新の99%が更新されます。 – Casey