declare @strA varchar(1000) set @strA='(1+5)*7.5' exec('select ' + @strA)
declare @i int set @i =(1+5)*7.5 select @i
参考:declare @tcnt int declare @paras varchar(100) DECLARE @SQLString NVARCHAR(500) set @paras ='1,3,5' set @sqlstring=N'select @cnt=count(*) from sysobjects where id in ('+@paras+')'set @tcnt=0 execute sp_executesql @sqlstring, N'@cnt int output', @cnt=@tcnt output select @tcnt select * from sysobjects 参考: Create Procedure GetMaxID @TableName varchar(100), @ID int output as begin declare @sql nvarchar(1000) set @sql='select @ID = count(ID) from '+@TableName exec sp_executesql @sql,N'@id int output',@id output end
declare @A varchar(300) set @A='select (1+5)*7.5' exec (@A)
declare @A varchar(300),@b varchar(20) set @b='(1+5)*7.5' set @A='select '+@b exec (@A)
declare @公式 varchar(100) set @公式='(a+b)*c' create table test (name varchar(10),value decimal(10,2)) insert test values('a',1) insert test values('b',5) insert test values('c',7.5) select @公式=replace(@公式,name,value) from test exec('select '+@公式+' 结果') go drop table test
declare @strA varchar(1000)
set @strA='(1+5)*7.5'
exec('select ' + @strA)
set @i =(1+5)*7.5
select @i
declare @paras varchar(100)
DECLARE @SQLString NVARCHAR(500)
set @paras ='1,3,5'
set @sqlstring=N'select @cnt=count(*) from sysobjects where id in ('+@paras+')'set @tcnt=0
execute sp_executesql
@sqlstring,
N'@cnt int output',
@cnt=@tcnt output
select @tcnt
select * from sysobjects
参考:
Create Procedure GetMaxID
@TableName varchar(100), @ID int output
as
begin
declare @sql nvarchar(1000)
set @sql='select @ID = count(ID) from '+@TableName
exec sp_executesql @sql,N'@id int output',@id output
end
set @A='select (1+5)*7.5'
exec (@A)
set @b='(1+5)*7.5'
set @A='select '+@b
exec (@A)
set @公式='(a+b)*c'
create table test (name varchar(10),value decimal(10,2))
insert test values('a',1)
insert test values('b',5)
insert test values('c',7.5)
select @公式=replace(@公式,name,value) from test
exec('select '+@公式+' 结果')
go
drop table test
declare @v decimal(18,4)
declare @strsql varchar(1000)set @strsql = '(1.9+3)*5.6'将@strsql的表达式的值传给@v,而@strsql的表达式是不断变化的