Existen 4 maneras de ejecutar sentencias SQL dentro de SQL Server, en este articulo revisamos cada una de ella y las diferencias entre ellas.
Metodos para ejecutar sentencias SQL
Existen 4 maneras de ejecutar sentencias SQL:
-
Dinámicos
-
Batch
-
Transacción
-
Scripts
Sentencias Dinámicas
Las sentencias dinámicas se refieren a aquellas sentencias que son generadas durante la ejecución de un script. Por ejemplo se puede generar un store procedure con variables para construir una sentencia SELECT que incorpore esas variables.
Las sentencias dinámicas siempre van acompañadas de la palabra EXECUTE (Transact-SQL) con strings y variables. SQL Server determina el valor de las variables conforme se va ejecutando el script.
Por ejemplo
DECLARE @tabla varchar(20), @bd varchar(20)
SET @tabla = 'authors'
SET @bd = 'pubs'
EXECUTE ('USE '+ @bd + 'SELECT * FROM ' + @tabla )
Se debe de tomar en cuenta al construir sentencias SQL Dinámicas lo siguiente:
-
Las variables utilizadas deben de ser de tipo carácter, si se quieren usar valores numéricos primero deben de convertirse a carácter.
-
Se pueden iterar múltiples sentencias dinámicas
-
No se pueden usar funciones dentro de sentencias dinámicas
Batches
Un Batch de SQL es simplemente la ejecución de varias sentencias juntas. Cada vez que ejecutamos una sentencia de SQL individualmente, el servidor presenta cierto overhead para su procesamiento, en cambio si ejecutamos varias sentencias de SQL juntas dentro de un batch recibe un solo overhead para todas las sentencias ejecutadas dentro del batch. Los batches mejoran el performance de SQL Server debido a que compila y ejecuta todo junto. Si durante la ejecución del batch SQL Server detecta un error de sintaxis, no se procesa ninguna sentencia dentro del batch.
Los batch se definen utilizando el comando GO, este comando no es una sentencia de SQL es solo una forma de identificar el final de un batch a través de las utilerías de SQL Server. SQL Server trata a todas las sentencias que están antes de un GO como un solo batch.
Ejemplo:
USE pubs
SELECT MAX(price) AS 'Máximo precio'
FROM titles
PRINT ' '
SELECT MIN(price) AS 'Menor precio'
FROM titles
PRINT ' '
SELECT AVG(price) AS 'Precio promedio'
FROM titles
GO
CREATE DATABASE Nombre_bd
CREATE TABLE nombre_tabla (column list)
GO CREATE TRIGGER Nombre_trigger
GO
Transacciones
BEGIN TRANSACTION SQL statement #1 SQL statement #2 ... COMMIT TRANSACTION |
Debes de usar siempre una transacción cuando queremos estar seguros de que todas las sentencias se apliquen correctamente, si alguna de ellas falla ninguna de ellas es aplicada.