表A:(A1,A2) 字段类型都是:varchar(50)
AA,A1
BB,A2
CC,A3
......比如我有一个存储过程,是这样的::
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[Test]
AS
BEGIN
---------------------------------------------------------------------------------------------------------------------
exec('select A2 from 表A where A1='''+'AA'+'''')
---------------------------------------------------------------------------------------------------------------------
END
即在表A中查找字段A1='AA'的记录.我的问题是如何能看到存储过程实际执行的语句,就是这句:select * from 表A where A1='AA'因为在用exec()中,出现如下情况:字符串的拼接,插入一些特殊字符(如在每条结果后面都加上':',再输出结果,即输出的是'A1:')...... 时,会出现比较多的 单引号,看的眼睛比较花。
所以想看看 存储过程 实际执行的语句,因为这样的:select * from 表A where A1='AA' 看起来很清晰直观。ps:因为有时有参数传入,难免会有sql语句拼接,所以会用到exec方式,所以不要轻易的说出'不用exec不就行了'这样的话。请大家慷慨指教。
AA,A1
BB,A2
CC,A3
......比如我有一个存储过程,是这样的::
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[Test]
AS
BEGIN
---------------------------------------------------------------------------------------------------------------------
exec('select A2 from 表A where A1='''+'AA'+'''')
---------------------------------------------------------------------------------------------------------------------
END
即在表A中查找字段A1='AA'的记录.我的问题是如何能看到存储过程实际执行的语句,就是这句:select * from 表A where A1='AA'因为在用exec()中,出现如下情况:字符串的拼接,插入一些特殊字符(如在每条结果后面都加上':',再输出结果,即输出的是'A1:')...... 时,会出现比较多的 单引号,看的眼睛比较花。
所以想看看 存储过程 实际执行的语句,因为这样的:select * from 表A where A1='AA' 看起来很清晰直观。ps:因为有时有参数传入,难免会有sql语句拼接,所以会用到exec方式,所以不要轻易的说出'不用exec不就行了'这样的话。请大家慷慨指教。
declare @sql nvarchar(4000)
set @sql='select A2 from 表A where A1='''+'AA'+''''
print @sql
--exec(@sql)
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[Test]
AS
BEGIN
declare @sql varchar(8000)
set @sql='select A2 from 表A where A1='''+'AA'+''''
print @sql或者select @sql
---------------------------------------------------------------------------------------------------------------------
exec(@sql)
---------------------------------------------------------------------------------------------------------------------
END
?
set @sql='select A2 from 表A where A1='''+'AA'+''''
print @sql
declare @sql nvarchar(2000)
set @sql='select A2 from 表A where A1='''+'AA'+''''
select @sql;--你可以在这查看
exec('select A2 from 表A where A1='''+'AA'+'''')
set QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[Test]
AS
BEGIN
declare @str varchar(8000)
---------------------------------------------------------------------------------------------------------------------
set @str='select A2 from 表A where A1='''+'AA'+''''
select @str --输出@str
exec(@str) --执行
---------------------------------------------------------------------------------------------------------------------
END
declare @sql
set @sql = " select * form table1 "
print @sql
declare @sql nvarchar(2000)
set @sql='select A2 from 表A where A1='''+'AA'+''''
select @sql再程序里获取到参数,然后在存储里把参数替换成程序里的,再print一下就行了
declare @sql nvarchar(2000)
set @sql='select A2 from 表A where A1='''+'AA'+''''
select @sql已经是显示执行的语句了
declare @sql
set @sql = " select * form table1 "
select @sql