Aracılığıyla paylaş


sp_scriptdynamicupdproc (Transact-SQL)

Bir dinamik güncelleştirme'yi oluşturan CREATE PROCEDURE deyim oluşturur saklı yordam.UPDATE deyim özel saklı yordam içinde dinamik olarak tabanlı değiştirmek için hangi sütunların gösteren MCALL sözdizimi, yerleşik olarak bulunur.Bu saklı yordam sayı kullanın, abone dizinlerinin tablo büyüdüğünü ve değiştirilmesini sütun sayısı küçüktür.Bu saklı yordam, Yayımcı tarafında yayın veritabanında çalıştırılır.

Topic link iconTransact-SQL sözdizimi kuralları

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ç döndüreceği küme, tek bir oluşur nvarchar(4000) sütun.Sonuç küme özel bir saklı yordam oluşturmak için kullanılan tam CREATE PROCEDURE deyim oluşturur.

Remarks

sp_scriptdynamicupdproc işlem çoğaltmasında kullanılır.Varsayılan MCALL komut dosyası kullanan kullanan dosyası kullanan mantığına tüm sütun içinde bir UPDATE deyim içerir ve bir bit eşlem değişen sütunları belirlemek için kullanır.Bir sütunda değişiklik yaparsanız, sütundur küme geri kendisine, genellikle yok sorunlarına neden oluyor.Sütun dizini fazladan işlem oluşur.Dinamik bir yaklaşım, en iyi bir UPDATE dize sağlayan yalnızca değişmiş olan sütunlar içerir.Dinamik GÜNCELLEŞTIR deyim oluşturulduğunda ancak fazladan işlem çalışma zamanında oluşan.Dinamik ve statik yaklaşımlar sınamak ve sonra da en iyi çözüm seçin öneririz.

İzinler

Yalnızca üyeleri sysadmin sabit sunucu rolü veya db_owner sabit veritabanı rolü çalıştırabilirsinizsp_scriptdynamicupdproc.

Örnekler

Bu örnek, bir makaleyle (oluşturur. artid küme için 1) hakkındaYazarlar tablosundaPubs veritabanı ve UPDATE deyimini yürütmek için özel bir yordam olduğunu belirtir:

'MCALL sp_mupd_authors'

Abone adresindeki dağıtım aracı tarafından Yayımcı tarafında saklı yordamını çalıştırarak yürütülecek özel saklı yordamlarda oluşturur:

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ın, abonelerin sırasında el ile oluşturmak için kullanabilirsiniz.

See Also

Other Resources