Cómo crear y usar fragmentos de código T-SQL

En este artículo describiremos la función de fragmentos en ApexSQL Complete y daremos ejemplos de cómo utilizar variables de macro de fragmentos.

ApexSQL Complete es un complemento para generar código SSMS y VS que le ayuda a acelerar el proceso de codificación utilizando características tales como auto-completar fragmentos de código SQL, instrucciones de inserción automática, sustitución automática y más.

La función ApexSQL Complete’s Snippets le permite insertar fragmentos de código T-SQL personalizados en sus scripts SQL. Puede utilizar fragmentos para insertar rápidamente instrucciones SQL de uso frecuente, como también generar procedimientos completos y páginas de código.

Crear un nuevo fragmento

Hay dos formas de crear fragmentos en ApexSQL Complete – desde el menú ApexSQL y desde la ventana de consulta SSMS:

  1. En el menú ApexSQL Complete, seleccione el comando Options para abrir el cuadro de diálogo ApexSQL Complete Options:

    En la pestaña Snippets, haga clic en el botón Add. Esto abrirá el cuadro de diálogo Create a new snippet:

  2. Otra forma de crear fragmentos en ApexSQL Complete es directamente desde un fragmento de código en la ventana de consulta. Por ejemplo, para crear un fragmento desde el siguiente código:

    SELECT * 
    FROM sys.sql_expression_dependencies
    

    Escriba el código en una ventana de consulta, haga clic con el botón derecho y elija el comando New snippet del menú contextual:

    Al seleccionar el comando New snippet, se abrirá el diálogo Create a new snippet y el código se agregará automáticamente en la Sección Code del diálogo:

    Si desea editar un fragmento existente, en el cuadro de diálogo ApexSQL Complete Options haga clic en el botón Edit:

    Este comando abrirá el cuadro de diálogo Edit snippet:

Ejemplos de uso de las variables de macro fragmento de ApexSQL Complete

El diálogo Snippet managing contiene una lista de macro variables para implementar fragmentos de código para la generación de código dinámico:

$DATE$, $TIME$, $SERVER$, $LOGIN$, $DB$, $USER$, $OSUSER$, $MACHINE$, $OBJECT$, $SELECTION$, $CARET$ and $PROMPT$ variables de macro

Utilizar las macro variables $DATE$, $TIME$, $SERVER$, $LOGIN$, $DB$, $USER$, $OSUSER$, $MACHINE$, $OBJECT$, $SELECTION$, $CARET$, $PROMPT$ en el fragmento de código devolverá la fecha, hora, nombre del servidor de conexión, un inicio de sesión de conexión, una base de datos de conexión, un nombre de usuario de conexión, un nombre de usuario de sistema operativo local, un nombre de usuario de host local, un nombre de máquina local, un objeto actual, una selección, la posición del cursor y el indicador interactivo del usuario actuales, respectivamente.

Por ejemplo, podemos crear nuevos fragmentos en ApexSQL Complete, utilizando esas variables:

Cuando se utilice, el fragmento le dará la hora actual, el nombre del servidor de conexión, un inicio de sesión de conexión, una base de datos de conexión, un nombre de usuario de conexión, un nombre de usuario de sistema operativo local y un nombre de usuario de host local.

Fragmento de código:

/****** 
Object:  StoredProcedure [dbo].[SQLSnippet]    
Script Date: $DATE$
Script Time: $TIME$
Server Name: $SERVER$
Login: $LOGIN$
Database Name: $DB$
Database User: $USER$
User: $OSUSER$
Host: $MACHINE$
******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SQLSnippet]
AS
IF year( getdate()) = '2014'
PRINT 'Live long and prosper'
GO

Código en la ventana de consultas luego de insertar el fragmento:

/****** 
Object:  StoredProcedure [dbo].[SQLSnippet]    
Script Date: 24-Feb-14
Script Time: 10:07:35 PM
Server Name: MCA\LENOVO 
Login: MCA\MB 
Database Name: AdventureWorks2012
Database User: Spock 
User: MB 
Host: MCA 
******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SQLSnippet]
AS
IF year( getdate()) = '2014'
PRINT 'Live long and prosper'
GO

La macro variable $OBJECT$

Crear fragmentos en ApexSQL Complete con la variable $OBJECT$ reemplazará la macro variable con un objeto seleccionado en la lista de indicaciones. Por ejemplo, crear un fragmento ALTER TABLE de la siguiente manera:

Cuando se utilice el fragmento AddColumn, solicitará la lista de indicaciones de las tablas disponibles en la base de datos actual:

Cuando se selecciona un objeto de la lista de indicaciones, la macro variable $OBJECT$ se sustituirá por el nombre de un objeto seleccionado en la lista de indicaciones.

Fragmento de código:

ALTER TABLE $OBJECT$
ADD

Código en la ventana de consulta después de seleccionar un objeto de la lista de indicaciones:

USE [AdventureWorks2014]
ALTER TABLE BusinessEntity
ADD

La macro variable $SELECTION$

Un fragmento creado con la variable $SELECTION$ reemplazará la variable con el nombre de la selección resaltada de la ventana de consulta. Por ejemplo, con el siguiente fragmento de código:

Cuando se inserte el fragmento, ajustará la selección desde una ventana de consulta con un fragmento de código y reemplazará la variable $SELECTION$ con una selección de la ventana de consulta.

Fragmento de código:

CREATE PROCEDURE
AS
BEGIN
$SELECTION$
END

Código seleccionado en la ventana de consulta:

CREATE PROCEDURE
AS
BEGIN
IF year( getdate()) = '2014'
PRINT 'Live long and prosper'
END

La macro $PROMPT(varName, text, default, title)$

La macro $PROMPT(varName, text, default, title)$ crea un cuadro de diálogo con un indicador personalizado donde se encuentran las VarName, text, default y title que significan:

varName – una variable o en la que se guarda el resultado

text – texto personalizado solicitado con instrucción para un usuario

title – título del diálogo

Por ejemplo, crearemos un fragmento de código para un nuevo disparador utilizando la macro variable $PROMPT(…)$

Cuando se utilice este fragmento, se le pedirá al usuario que introduzca un nombre de un disparador:

New trigger dialog

Cuando el usuario introduce un nombre para un desencadenador y hace clic en el botón Aceptar, el nombre de la variable insertada se guardará y se utilizará en el lugar donde se haya definido por el fragmento.

Fragmento de código:

$PROMPT(TriggerName, New trigger, Enter a new trigger name, New trigger dialog)$
CREATE TRIGGER $TriggerName$
 ON /* table name */
 AFTER INSERT, UPDATE
 AS
 BEGIN
/* body */
 SET NOCOUNT ON
 END

El texto introducido en el diálogo solicitado:

Código en la ventana de consulta después de insertar una variable en el cuadro de diálogo solicitado:

CREATE TRIGGER TriggerOnInsert
 ON /* table name */
 AFTER INSERT, UPDATE
 AS
 BEGIN
/* body */
 SET NOCOUNT ON
 END

Uso de fragmentos creados en ApexSQL Complete

ApexSQL Complete ofrece dos formas de insertar un fragmento de código T-SQL creado:

  1. Mientras escribe dependiendo del tipo de fragmento, seleccione la parte que ha escrito en la ventana de consulta o simplemente haga clic con el botón derecho del ratón y elija el comando Insert snippet:

  2. Seleccione el fragmento de la lista desplegable solicitada:

  3. Comience a escribir el nombre de un fragmento y haga clic en el fragmento de la lista de indicaciones:

febrero 23, 2017