Sintaxis básica de sentencias SQL dinámicas
1: las declaraciones SQL ordinarias se pueden ejecutar con Exec
por ejemplo: seleccione * de nombre de tabla
Exec('seleccionar * de nombre de tabla')
Exec sp_executesql N'select * from tableName' - Tenga en cuenta que se debe agregar N antes de la cadena
2: Cuando se utilizan nombres de campos, nombres de tablas, nombres de bases de datos, etc. como variables, se debe utilizar SQL dinámico
p.ej:
declarar @fname varchar(20)
set @fname = 'Nombre de archivo'
Seleccione @fname de tableName - Error, no se mostrará ningún error, pero el resultado es un valor fijo FiledName, que no es lo que desea.
Exec('select ' + @fname + ' from tableName') -- Tenga en cuenta que hay espacios alrededor de las comillas simples antes y después del signo más.
Por supuesto, también puedes cambiar la cadena a una forma variable.
declarar @fname varchar(20)
set @fname = 'FiledName' --Establece el nombre del campo
declarar @s varchar(1000)
set @s = 'select ' + @fname + ' from tableName'
Ejecutivo(@s) - éxito
exec sp_executesql @s: esta oración informará un error
declare @s Nvarchar(1000) - tenga en cuenta que se cambia a nvarchar(1000)
set @s = 'select ' + @fname + ' from tableName'
Ejecutivo(@s) - éxito
exec sp_executesql @s - Esta oración es correcta
3. Parámetros de salida
declarar @num int,
@sqlsnvarchar(4000)
set @sqls='seleccionar recuento (*) de nombretabla'
ejecutivo(@sqls)
--¿Cómo poner el resultado de la ejecución ejecutiva en una variable?
declarar @num int,
@sqlsnvarchar(4000)
set @sqls='select @a=count(*) from tableName '
ejecutivo sp_executesql @sqls,N'@a int salida',@num salida
seleccione @num
Si desea utilizar comillas simples '' en la cadena de instrucción SQL, puede utilizar ''''