none
Snippet generar bucle de literales que sean necesarios RRS feed

  • Pregunta

  • Buenos días tengo un problema con los snippet

    Mi pregunta es hay algún modo de generar un bucle para que me genere <Literal></Literal> con incrementales

    es decir: Tengo este código

    <?xml version="1.0" encoding="utf-8"?>
    <CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
      <CodeSnippet Format="1.0.0">
        ...
        <Snippet>
          <Declarations>
            <!--Sección cabecera del procedimiento-->
            <Literal>
              <ID>SchemaName</ID>
              <ToolTip>Nombre del esquema</ToolTip>
              <Default>dbo</Default>
            </Literal>
            <Literal>
              <ID>NameOfTheStoreProcedure</ID>
              <ToolTip>Nombre del procedimiento almacenado.</ToolTip>
              <Default>Sample_Procedure</Default>
            </Literal>
            <Literal>
              <ID>StoredProcedure_Description</ID>
              <ToolTip>Es la descripción de lo que hace el procedimiento almacenado en una frase.</ToolTip>
              <Default>Description_Of_The_Procedure</Default>
            </Literal>
            <!--Sección parámetros-->
            <Literal>
              <ID>Parameter_NumberOfTheCompany</ID>
              <ToolTip>Es el número que sirve para identificar a la compañia.</ToolTip>
              <Default>NCompany</Default>
            </Literal>
            <Literal>
              <ID>Parameter_NumberOfTheCompany_Description</ID>
              <ToolTip>Es la descripción que se le da al número que sirve para identificar a la compañia.</ToolTip>
              <Default>It is the number, which serves to identify the company.</Default>
            </Literal>
            <Literal>
              <ID>Parameter_NumberOfTheCompany_DataType</ID>
              <ToolTip>Indica el tipo del parámetro de la variable NCompany.</ToolTip>
              <Default>varchar(5)</Default>
            </Literal>
            <Literal>
              <ID>Parameter_IdOfTheTable</ID>
              <ToolTip>Es el identificador que hay en la tabla.</ToolTip>
              <Default>Table_Id</Default>
            </Literal>
            <Literal>
              <ID>Parameter_IdOfTheTable_Description</ID>
              <ToolTip>Es el identificador que hay en la tabla.</ToolTip>
              <Default>Is the identifier of the table in which you want to update.</Default>
            </Literal>
            <Literal>
              <ID>Parameter_IdOfTheTable_DataType</ID>
              <ToolTip>Indica el tipo del parámetro de la variable Table_Id.</ToolTip>
              <Default>Int</Default>
            </Literal> 
            <Literal>
              <ID>Parameter_1</ID>
              <ToolTip>Name of the parameter 1.</ToolTip>
              <Default>Parameter_1</Default>
            </Literal>
            <Literal>
              <ID>Parameter_1_Description</ID>
              <ToolTip>Es la descripción del parámetro 1.</ToolTip>
              <Default>Description of the Parameter_1.</Default>
            </Literal>
            <Literal>
              <ID>Parameter_1_DataType</ID>
              <ToolTip>Indica el tipo del Parameter_1.</ToolTip>
              <Default>Int</Default>
            </Literal>
            <Literal>
              <ID>Parameter_2</ID>
              <ToolTip>Name of the parameter 2.</ToolTip>
              <Default>Parameter_2</Default>
            </Literal>
            <Literal>
              <ID>Parameter_2_Description</ID>
              <ToolTip>Es la descripción del parámetro 2.</ToolTip>
              <Default>Description of the Parameter_2.</Default>
            </Literal>
            <Literal>
              <ID>Parameter_2_DataType</ID>
              <ToolTip>Indica el tipo del Parameter_2.</ToolTip>
              <Default>Int</Default>
            </Literal>
          </Declarations>
          <Code Language="SQL">
      <![CDATA[
    GO
    CREATE PROCEDURE $SchemaName$.$NameOfTheStoreProcedure$ 
        @$Parameter_NumberOfTheCompany$ $Parameter_NumberOfTheCompany_DataType$,
        @$Parameter_IdOfTheTable$ $Parameter_IdOfTheTable_DataType$,
        @$Parameter_1$ $Parameter_1_DataType$,
        @$Parameter_2$ $Parameter_2_DataType$
    AS
    BEGIN
    	/*Codigo del procedimiento*/
    
    --Section procedure
    EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'$StoredProcedure_Description$', @level0type=N'SCHEMA', @level0name=N'$SchemaName$', @level1type=N'PROCEDURE', @level1name=N'$NameOfTheStoreProcedure$'
    GO
    --Section parameters - 
    EXEC SYS.SP_ADDEXTENDEDPROPERTY @NAME=N'MS_DESCRIPTION',	@VALUE=N'$Parameter_NumberOfTheCompany_Description$',	@LEVEL0TYPE=N'SCHEMA', @LEVEL0NAME=N'$SchemaName$',	@LEVEL1TYPE=N'PROCEDURE', @LEVEL1NAME=N'$NameOfTheStoreProcedure$',   @LEVEL2TYPE=N'PARAMETER', @LEVEL2NAME=N'@$Parameter_NumberOfTheCompany$';
    GO
    EXEC SYS.SP_ADDEXTENDEDPROPERTY @NAME=N'MS_DESCRIPTION',	@VALUE=N'$Parameter_IdOfTheTable_Description$',	@LEVEL0TYPE=N'SCHEMA', @LEVEL0NAME=N'$SchemaName$',	@LEVEL1TYPE=N'PROCEDURE', @LEVEL1NAME=N'$NameOfTheStoreProcedure$',   @LEVEL2TYPE=N'PARAMETER', @LEVEL2NAME=N'@$Parameter_IdOfTheTable$';
    GO
    EXEC SYS.SP_ADDEXTENDEDPROPERTY @NAME=N'MS_DESCRIPTION',	@VALUE=N'$Parameter_1_Description$',	@LEVEL0TYPE=N'SCHEMA', @LEVEL0NAME=N'$SchemaName$',	@LEVEL1TYPE=N'PROCEDURE',@LEVEL1NAME=N'$NameOfTheStoreProcedure$',   @LEVEL2TYPE=N'PARAMETER', @LEVEL2NAME=N'@$Parameter_1$';
    GO
    EXEC SYS.SP_ADDEXTENDEDPROPERTY @NAME=N'MS_DESCRIPTION',	@VALUE=N'$Parameter_2_Description$',	@LEVEL0TYPE=N'SCHEMA', @LEVEL0NAME=N'$SchemaName$',	@LEVEL1TYPE=N'PROCEDURE',@LEVEL1NAME=N'$NameOfTheStoreProcedure$',   @LEVEL2TYPE=N'PARAMETER', @LEVEL2NAME=N'@$Parameter_2$';
    GO
    $end$]]>
          </Code>
        </Snippet>
      </CodeSnippet>
    </CodeSnippets>
    


    Como se puede observar se repite con la única diferencia los Literal:

            <Literal>
              <ID>Parameter_1</ID>
              <ToolTip>Name of the parameter 1.</ToolTip>
              <Default>Parameter_1</Default>
            </Literal>
            <Literal>
              <ID>Parameter_1_Description</ID>
              <ToolTip>Es la descripción del parámetro 1.</ToolTip>
              <Default>Description of the Parameter_1.</Default>
            </Literal>
            <Literal>
              <ID>Parameter_1_DataType</ID>
              <ToolTip>Indica el tipo del Parameter_1.</ToolTip>
              <Default>Int</Default>
            </Literal>
            <Literal>
              <ID>Parameter_2</ID>
              <ToolTip>Name of the parameter 2.</ToolTip>
              <Default>Parameter_2</Default>
            </Literal>
            <Literal>
              <ID>Parameter_2_Description</ID>
              <ToolTip>Es la descripción del parámetro 2.</ToolTip>
              <Default>Description of the Parameter_2.</Default>
            </Literal>
            <Literal>
              <ID>Parameter_2_DataType</ID>
              <ToolTip>Indica el tipo del Parameter_2.</ToolTip>
              <Default>Int</Default>
            </Literal>

    En realidad me gustaría crear estos 3 literales y meterlos en un bucle donde el usuario cuando vaya a escribir para indicar cuantos parámetros vaya a necesitar y se repita el bucle esas X veces

    /*Bucle que genere los literales*/

    <Literal> <ID>Parameter_X</ID> <ToolTip>Name of the parameter X.</ToolTip> <Default>Parameter_1</Default> </Literal> <Literal> <ID>Parameter_X_Description</ID> <ToolTip>Es la descripción del parámetro X.</ToolTip> <Default>Description of the Parameter_X.</Default> </Literal> <Literal> <ID>Parameter_X_DataType</ID> <ToolTip>Indica el tipo del Parameter_X.</ToolTip> <Default>Int</Default> </Literal>

    /*Bucle que repita el código según valor de X desde aquí*/

        @$Parameter_X$ $Parameter_X_DataType$,

    /*Hasta aquí*/

    ...

    /*Bucle que repita el código en otra sección del código que repita el valor de X desde aquí*/

    EXEC SYS.SP_ADDEXTENDEDPROPERTY @NAME=N'MS_DESCRIPTION', @VALUE=N'$Parameter_X_Description$', @LEVEL0TYPE=N'SCHEMA', @LEVEL0NAME=N'$SchemaName$', @LEVEL1TYPE=N'PROCEDURE',@LEVEL1NAME=N'$NameOfTheStoreProcedure$',   @LEVEL2TYPE=N'PARAMETER', @LEVEL2NAME=N'@$Parameter_X$';
    GO

    /*Hasta aquí*/


    Hay algún modo de configurar un snippet para que genere bucles? Porque el problema está es que sino me toca copiar pegar y sustituir y claro si creo de más pues es solo borrar pero si creo de menos, ya el snippet pierde toda su funcionalidad.

    Otra cosa ¿hay algún modo para cuando ejecute el snippet acceder al valor de DateTime.Now es decir hora local?

    EXEC SYS.SP_ADDEXTENDEDPROPERTY @NAME=N'MS_DESCRIPTION',	@VALUE=N'$Parameter_1_Description$',	@LEVEL0TYPE=N'SCHEMA', @LEVEL0NAME=N'$SchemaName$',	@LEVEL1TYPE=N'PROCEDURE',@LEVEL1NAME=N'$NameOfTheStoreProcedure$',   @LEVEL2TYPE=N'PARAMETER', @LEVEL2NAME=N'@$Parameter_1$';
    GO
    jueves, 21 de diciembre de 2017 9:21

Respuestas

  • Hola El dudas

    De acuerdo a tu consulta, puedes utilizar el bucle foreach, en donde puedes configurar el snippet, para información te recomiendo ir al siguiente enlace que puede serte útil.

    https://docs.microsoft.com/es-es/sql/integration-services/extending-packages-scripting-task-examples/gathering-a-list-for-the-foreach-loop-with-the-script-task

    Quedamos atentos ante cualquier comentario de tu parte.

    Saludos cordiales y felices fiestas.

    Gracias por usar los foros de MSDN.

    Pablo Rubio
     _____

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. 

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.  

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.

    jueves, 21 de diciembre de 2017 16:57
    Moderador
  • Lo siento no he entendido nada de nada.  Referente para los snippets

    Podrías hacer un ejemplo sencillo de ello, con snippet, que sea funcional?

    viernes, 22 de diciembre de 2017 10:38

Todas las respuestas

  • Hola El dudas

    De acuerdo a tu consulta, puedes utilizar el bucle foreach, en donde puedes configurar el snippet, para información te recomiendo ir al siguiente enlace que puede serte útil.

    https://docs.microsoft.com/es-es/sql/integration-services/extending-packages-scripting-task-examples/gathering-a-list-for-the-foreach-loop-with-the-script-task

    Quedamos atentos ante cualquier comentario de tu parte.

    Saludos cordiales y felices fiestas.

    Gracias por usar los foros de MSDN.

    Pablo Rubio
     _____

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. 

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.  

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.

    jueves, 21 de diciembre de 2017 16:57
    Moderador
  • Lo siento no he entendido nada de nada.  Referente para los snippets

    Podrías hacer un ejemplo sencillo de ello, con snippet, que sea funcional?

    viernes, 22 de diciembre de 2017 10:38