2011-06-21 21 views
8

Ben veritabanında prosedürü oluştururken böyle, CLR işlemleri için varsayılan değerleri tanımlayabilirsiniz biliyorum:SQL CLR Prosedürü VS2008 dağıtımında varsayılan parametre?

CREATE PROCEDURE [dbo].[ShredXml] (
    @InputXml [xml], 
    @AttributeElementHandling [tinyint] = 0, 
    @ConversionHandling [tinyint] = 0, 
    @RootElementName [nvarchar](255) = null 
    ) 
AS EXTERNAL NAME [ClrXmlShredder].[ClrXmlShredder].[ShredXml] 

Ne çözemiyorum bunu yapmak için Visual Studio ikna için herhangi bir yolu yoktur olup olmadığıdır otomatik olarak "Proje Dağıt" seçeneğini kullanırken ...

Veritabanında proc oluşturduğunda, Visual Studio'yu bu argüman için varsayılan değerin ne olmasını istediğinizi söylemek için bir argüman üzerinde ayarlanabilen bir özellik var mı? ?

Güncelleme: Ben hiçbir etkisi var gibiydi nullability "SqlFacet" ayarı denedim -

[Microsoft.SqlServer.Server.SqlProcedure] 
public static void ShredXml(SqlXml InputXml, 
    [SqlFacet(IsNullable = true)]SqlByte AttributeElementHandling, 
    [SqlFacet(IsNullable = true)]SqlByte ConversionHandling, 
    [SqlFacet(MaxSize = 255, IsNullable = true)]string RootElementName 
    ) 
{ 
} 
+0

Bunun için bir çözüm buldunuz mu? – tbone

+0

@tbone no, yapmadım, ama dürüst olmak gerekirse, bundan 2 yıl önce VS2008 ile endişelenmeyi bıraktım; Daha sonraki versiyonlarda herhangi bir şeyin değişip değişmediğini bilmiyorum. – Tao

cevap

1

Görsel stüdyoya, veritabanında proc oluşturduğunda, bu bağımsız değişken için varsayılan değerin ne olmasını istediğinizi söylemek için bir argüman üzerinde ayarlanabilecek bir özellik var mı? Ne yazık ki ne yazık ki, bugünkü cevap bir “hayır” yanıtını vermektedir. SSDT vb, Skaler UDF için WITH RETURNS NULL ON NULL INPUT belirterek olarak epeyce seçenekleri desteklemez

Ben SSDT - Support T-SQL parameter defaults for SQLCLR objects via the SqlFacet attribute when generating the publish and create SQL scripts parametre varsayılan desteklemek için Bağlan Öneri açtı, ama resmi kelime şimdiye kadar şudur: "harika bir fikir değil yakında olacak. Yani şimdilik

en iyi bahis bir Sonrası Dağıtım Komut oluşturmaktır (SQL Server/Kullanıcı komut dosyaları bulunur) ve ("DDL üret" seçeneğini kullanıyorsanız) ya

  • ALTER ifadeleri ekleyebilir veya istenilen şekilde
  • CREATE ifadeleri ("DDL üret" seçeneğini kullanılmıyorsa) orada

saklı yordam ve/veya Fonksiyon özellikleri yeniden tanımlamak için. Dağıtım Sonrası Komut Dosyası, oluşturulan dağıtım komut dosyasının sonuna eklenir.

Ayrıca, SSDT yayımlama işleminde bu açık boşluğu düzeltecek ve bu seçenekleri programlı olarak ayarlamaya izin verecek bir şey üzerinde çalışıyorum. Çalışırsam, bu cevabı detaylarıyla güncelleyeceğim.

0

Sen tanımlayabilirsiniz (duyu sanırım yapar afaik saklı yordam parametreler her zaman null vardır?) işlevdeki varsayılan değerler. Altta yatan SQL tarafı sarmalayıcıdan null geçtiğinde kullanılacaklar. Sadece varsayılan olarak prosedür parametrelerini belirtin ve varsayılanları fonksiyona getirin. Tamam olmalı.

+0

Teşekkürler, ama bu gerçekten sorduğum şey değil. Söylediğim gibi yaparsam, proc için arayanın "EXEC ShredXml @Value, null, null, null" gibi bir şey söylemesi gerekir. Sadece "EXEC ShredXml" diyebilmelerini istiyorum. Manuel yayıncılıkla ilgili bir geçici çözüm olduğu için büyük bir anlaşma/tasarım sorunu değil, görsel stüdyo otomatik dağıtımıyla ilgili bir soru. – Tao