EXEC和SP_EXECUTESQL的用法

declare @TableName varchar(50)
declare @Sql nvarchar(max)
declare @type int

 

set @TableName = 'list'
set @type = 100
set @Sql = N'select account from ' + quotename(@TableName) + N' where type = ' + cast(@type as varchar(10))
print(@Sql)
--exec(@Sql)
exec sp_executesql @Sql
--/////////////////////////////////////////////////////////////

declare
        @TableName varchar(50),
        @sql       nvarchar(max),
        @type       int,
        @flag      int
set @TableName = 'list'
set @type      = 100
set @flag      = 1
set @sql       = 'select account from ' + quotename(@TableName) + ' where type = @OID and isdelete = @ODD'

exec sp_executesql
     @stmt   = @sql,
     @params = N'@OID AS int ,@ODD AS int',
     @OID    = @type,
     @ODD    = @flag
--////////////////////////////////////////////////////////////////////////////

declare
        @TableName varchar(50),
        @sql       nvarchar(max),
        @name       varchar(18),
        @flag      varchar(10)

 

set @flag      = '2'
set @TableName = 'Table' + @flag
set @name      = 'aaa'
set @sql       = 'select top(2) col1 from ' + quotename(@TableName) + ' where name = @name1 '

print(@sql)
exec sp_executesql
     @stmt   = @sql,
     @params = N'@name1 AS varchar(18)',
     @name1  = @name

--///////////////////////

declare
        @TableName varchar(50),
        @sql       nvarchar(max),
        @name       varchar(18),
        @flag      varchar(10),
        @Total       int

 

set @flag      = '2'
set @TableName = 'Log' + @flag
set @name      = 'bbb'
set @Total       = 0
set @sql       = 'select @iTotal = count(*) from ' + quotename(@TableName) + ' where name = @name1 '

print(@sql)
exec sp_executesql
     @stmt   = @sql,
     @params = N'@name1 AS varchar(18),@iTotal as int output',
     @name1  = @name,
     @iTotal = @Total output
select @Total

posted @ 2010-11-02 14:00  rob_2010  阅读(233)  评论(0)    收藏  举报