我知道在数据库中创建过程时可以为 CLR 过程定义默认值,如下所示:
CREATE PROCEDURE [dbo].[ShredXml] (
@InputXml [xml],
@AttributeElementHandling [tinyint] = 0,
@ConversionHandling [tinyint] = 0,
@RootElementName [nvarchar](255) = null
)
AS EXTERNAL NAME [ClrXmlShredder].[ClrXmlShredder].[ShredXml]
我不知道是否有任何方法可以说服 Visual Studio 在使用其“部署项目”选项时自动执行此操作......
当它在数据库中创建 proc 时,是否可以在参数上设置一个属性来告诉 Visual Studio 您希望该参数的默认值是什么?
更新:我尝试设置可空性“SqlFacet”,这似乎没有效果(我猜这很有意义 - afaik 存储的 proc 参数总是可以为空的?)
[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
)
{
}