Execute用法

语法:

sp_executesql [@stmt =] stmt
[
    {, [@params =] N'@parameter_name  data_type [,...n]' }
    {, [@param1 =] 'value1' [,...n] }
]

EXECUTE语句可以执行存放SQL语句的字符串变量,或直接执行SQL语句字符串。

exec sql是执行存储过程,有参数的加参数

exec(sql)是执行sql字符串语句

--试了一下with as 不行,但应该是我写的语句问题,后面再试一下

--好吧,好像真的不可以,试了好几次还是不行,再看看资料再定论。。。20210708

1、执行字符串

例子:先创建表

create table #a_aa_a(
t_id int,
t_name varchar(10),
t_date int,
t_grade int
)
insert into #a_aa_a VALUES  (132154,'盲僧',20210401,1)
insert into #a_aa_a VALUES  (231654,'盲僧',20210403,2)
insert into #a_aa_a VALUES  (236587,'盲僧',20210405,3)
insert into #a_aa_a VALUES  (365214,'亚索',20210401,1)
insert into #a_aa_a VALUES  (365214,'亚索',20210403,2)
insert into #a_aa_a VALUES  (325412,'亚索',20210405,3)
insert into #a_aa_a VALUES  (365584,'盖伦',20210401,1)
insert into #a_aa_a VALUES  (236587,'盖伦',20210403,2)
insert into #a_aa_a VALUES  (326985,'盖伦',20210408,3)

例1

Declare @SQLText1 Varchar(50) 
Set @SQLText1 = '132154'--为字符串,需要引号
Execute('Select * from #a_aa_a where t_id='  +@SQLText1)

Execute用法_第1张图片

例2:有汉字情况

Declare @SQLText2 Varchar(50) 
Set @SQLText2 = 'where t_name in(''盲僧'')'--为字符串,需要引号
Execute('Select * from #a_aa_a '+@SQLText2)

Execute用法_第2张图片例3

错误例子:

Declare @SQLText3 Varchar(50) 
Set @SQLText3 = 'case when t_name =''盲僧'' then 1 else 0 end as ''是瞎子'''
Execute('Select *,'+@SQLText3+' from #a_aa_a ')

这里报错了,一致没理解是为什么,后来突然get到点

Execute用法_第3张图片

 修改后

Declare @SQLText3 Varchar(50) 
Set @SQLText3 = 'case when t_name =''盲僧'' then 1 else 0 end '
Execute('Select *,'+@SQLText3+'as ''是瞎子'' from #a_aa_a ')

Execute用法_第4张图片

-----------------------------------------------------------------------------------------------------------------------

2、执行存储过程:
 使用参数名传递参数值,是通过语句“@参数名=参数值”给参数传递值。
 EXECUTE 存储过程名 [@参数名=参数值] [,...n]
(那么和Exce的用法是一样的了,其实这就是简称)

例子:EXECUTE 存储过程 参数1,参数2···

你可能感兴趣的:(数据库,数据库)