动态sql

动态sql和静态sql的区别?

  所谓sql的动态和静态是指sql语句在何时被编译和执行,二者都是用在sql嵌入式编程中的,这里所说的嵌入式是指将sql语句嵌入在高级语言中,而不是针对单片机的那种嵌入式编程。

什么是静态sql?

  高级语言中嵌入的sql语句在编译阶段sql的主体结构已经明确。

什么是动态sql?

  sql的主体结构在编译阶段无法确定,只有等程序运行起来,在执行过程中才能确定。

执行动态sql的方法?

  1)使用exec命令,exec有两个用途,一个用来执行存储过程,一个用来执行动态sql。用exec来执行静态sql没有意义,性能低,动态sql用在数据库名、表名、字段名作为参数的的场景。

declare @test nvarchar(128)
set @test = 'name'
exec ('select '+ @test+' from child') //执行动态sql必须有这个括号
declare @sql varchar(max)
declare @test nvarchar(128)
set @test = 'name'
set @sql = 'select '+ @test+' from child'
exec(@sql) //执行动态sql必须有这个括号

注意:也可以使用 exec sp_executesql 形式
EXEC sp_executesql @sql -- 注意:@sql必须是ntext,nchar,nvarchar类型,不可以是varchar类型
原文地址:https://www.cnblogs.com/llljpf/p/10550751.html