Aracılığıyla paylaş


sp_scriptdynamicupdproc (Transact-SQL)

Dinamik güncelleştirme oluşturur create procedure deyim oluşturur saklı yordam.Özel bir saklı yordam içinde bir update deyim dinamik olarak değiştirmek için hangi sütunların gösteren mcall sözdizimi yerleşik olarak bulunur.Bu saklı yordam numarayı kullanın abone üzerindeki dizinleri tablo büyüdüğünü ve değiştirilmesini sütun sayısı kadar küçüktür.Bu saklı yordam yayın veritabanı üzerinde Yayımcı tarafında çalışır.

Konu bağlantısı simgesiTransact-sql sözdizimi kuralları

Sözdizimi

sp_scriptdynamicupdproc [ @artid =] artid

Bağımsız değişkenler

  • [ @artid=] artid
    Is the article ID.artid is int, with no default.

Sonuç Kümeleri

Bir sonuç küme döndürür oluşan tek bir nvarchar(4000) sütun.Formları eksiksiz create procedure sonuç kümende deyim özel saklı yordam oluşturmak için kullanılır.

Açıklamalar

sp_scriptdynamicupdproc 'deki işlem çoğaltma kullanılır.Varsayılan komut dosyası kullanan kullanan kullanan dosyası mcall mantığını update deyim içindeki tüm sütunlar içerir ve bir bitmap değişen sütunları belirlemek için kullanır.Bir sütun değiştirmediyseniz, sütun geri kendisi için hiçbir sorun genellikle neden küme.sütun , Fazladan işlemesi dizine alınır.Dinamik bir yaklaşım sağlayan en uygun bir güncelleştirme dize yalnızca değişmiş olan sütunlar içerir.Dinamik güncelleştirme, ancak ekstra işlem çalışma zamanında maliyetlerdir deyim kurulmuştur.Dinamik ve statik yaklaşımları test edin ve en iyi çözüm seçin öneririz.

İzinler

Yalnızca üyeleri sysadmin sabit sunucu rolü veya db_owner sabit veritabanı rolü olabilir yürütmek sp_scriptdynamicupdproc.

Örnekler

Bu örnek, bir makale oluşturur (ile artid ayarlamak 1) üzerinde yazarlar , tablo pubs veritabanı ve belirleyen bir güncelleştirme deyim yürütmek için özel yordam:

'MCALL sp_mupd_authors'

Özel oluşturmak saklı yordamabone adresindeki dağıtım aracı tarafından aşağıdaki çalıştırarak yürütülecek s saklı yordam adresindeki Publisher:

EXEC sp_scriptdynamicupdproc @artid = '1'

The statement returns:

CREATE PROCEDURE [sp_mupd_authors] 
  @c1 varchar(11),@c2 varchar(40),@c3 varchar(20),@c4 char(12),@c5 varchar(40),@c6 varchar(20),
  @c7 char(2),@c8 char(5),@c9 bit,@pkc1 varchar(11),@bitmap binary(2)
as

declare @stmt nvarchar(4000), @spacer nvarchar(1)
SELECT @spacer =N''
SELECT @stmt = N'UPDATE [authors] SET '

if substring(@bitmap,1,1) & 2 = 2
begin
  select @stmt = @stmt + @spacer + N'[au_lname]' + N'=@2'
  select @spacer = N','
end
if substring(@bitmap,1,1) & 4 = 4
begin
  select @stmt = @stmt + @spacer + N'[au_fname]' + N'=@3'
  select @spacer = N','
end
if substring(@bitmap,1,1) & 8 = 8
begin
  select @stmt = @stmt + @spacer + N'[phone]' + N'=@4'
  select @spacer = N','
end
if substring(@bitmap,1,1) & 16 = 16
begin
  select @stmt = @stmt + @spacer + N'[address]' + N'=@5'
  select @spacer = N','
end
if substring(@bitmap,1,1) & 32 = 32
begin
  select @stmt = @stmt + @spacer + N'[city]' + N'=@6'
  select @spacer = N','
end
if substring(@bitmap,1,1) & 64 = 64
begin
  select @stmt = @stmt + @spacer + N'[state]' + N'=@7'
  select @spacer = N','
end
if substring(@bitmap,1,1) & 128 = 128
begin
  select @stmt = @stmt + @spacer + N'[zip]' + N'=@8'
  select @spacer = N','
end
if substring(@bitmap,2,1) & 1 = 1
begin
  select @stmt = @stmt + @spacer + N'[contract]' + N'=@9'
  select @spacer = N','
end
select @stmt = @stmt + N' where [au_id] = @1'
exec sp_executesql @stmt, N' @1 varchar(11),@2 varchar(40),@3 varchar(20),@4 char(12),@5 varchar(40),
                             @6 varchar(20),@7 char(2),@8 char(5),@9 bit',@pkc1,@c2,@c3,@c4,@c5,@c6,@c7,@c8,@c9

if @@rowcount = 0
   if @@microsoftversion>0x07320000
      exec sp_MSreplraiserror 20598

Bu saklı yordam çalıştırdıktan sonra elde edilen komut dosyası saklı yordam aboneleri el ile oluşturmak için kullanabilirsiniz.