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:
-
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:
-
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:
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:
-
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:
-
Comience a escribir el nombre de un fragmento y haga clic en el fragmento de la lista de indicaciones:
Seleccione el fragmento de la lista desplegable solicitada:
febrero 23, 2017