valor stored salida retornar procedimientos procedimiento parametros para mostrar ejemplos datos crear con almacenados almacenado sql-server visual-studio-2008 deployment sqlclr ssdt

sql-server - salida - retornar valor stored procedure sql server



ParĂ¡metro predeterminado del procedimiento SQL CLR en el despliegue VS2008? (2)

Puede definir los valores predeterminados en la función. Se usarán cuando se pase null desde el contenedor subyacente del lado SQL. Simplemente declare los parámetros del procedimiento sin los valores predeterminados y ponga los valores predeterminados a la función. Deberia estar bien.

Sé que puedo definir valores predeterminados para los procedimientos CLR al crear el procedimiento en la base de datos, como este:

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

Lo que no puedo entender es si hay alguna forma de convencer a Visual Studio de que haga esto automáticamente cuando use su opción "Implementar proyecto" ...

¿Hay algún atributo que pueda establecerse en un argumento para decirle a Visual Studio cuál es el valor predeterminado para ese argumento cuando crea el proceso en la base de datos?

Actualización: He intentado configurar la capacidad de nulidad "SqlFacet", que parecía no tener ningún efecto (lo que tiene sentido, supongo - afaik almacenados parámetros de proc son siempre anulables?)

[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 ) { }


¿Hay algún atributo que pueda establecerse en un argumento para decirle a Visual Studio cuál es el valor predeterminado para ese argumento cuando crea el proceso en la base de datos?

A partir de hoy, la respuesta es un rotundo "no", desafortunadamente. SSDT no admite bastantes opciones, como especificar WITH RETURNS NULL ON NULL INPUT para escalar UDF, etc.

Abrí una sugerencia de conexión para admitir valores predeterminados de parámetros, SSDT - Admite parámetros predeterminados de T-SQL para objetos SQLCLR a través del atributo SqlFacet al generar la publicación y creación de scripts SQL , pero la palabra oficial hasta ahora es: "gran idea, pero no va a sucederá pronto ".

Así que, por ahora, la mejor opción es crear un script posterior a la implementación (que se encuentra en SQL Server / User Scripts) y agregar cualquiera

  • ALTER (si usa la opción "Generar DDL"), o
  • CREATE (si no se usa la opción "Generar DDL")

allí para redefinir el Procedimiento Almacenado y / o las propiedades de Función como se desee. El script posterior a la implementación se agrega al final del script de despliegue generado.

También estoy trabajando en algo que, afortunadamente, solucionará este enorme vacío en el proceso de publicación de SSDT y permitirá establecer programáticamente estas opciones. Si lo hago funcionar, actualizaré esta respuesta con los detalles.