create procedure Output_ConfigInfo3
@BSC varchar(2)
as
begin
declare @table varchar(30)
set @table = 'dbo.tDistanceB'+@BSC
select n.BSC,n.BTSNO,n.CELL,b.CI,n.NCI,d.DISTANCE,(c.success+c.invalidPilotFail+c.blockFail+c.otherFail) as changeno,n.PILOT_PN,n.NCELLSYSTEM,n.NCELL
from dbo.oNeihtborhoodInfo n,dbo.tBaseStation b,@table d,dbo.oChange c
where n.BSC = b.BSC and n.BTSNO = b.BTSNO and n.CELL = b.CELL and b.CI = d.CI and n.NCI = d.NCI
and b.CI = c.CI and n.NCI = c.gCI
end消息 1087,级别 15,状态 2,过程 Output_ConfigInfo3,第 10 行
必须声明表变量 "@table"。
为什么报这个错,怎么解决?
declare @tablename varchar(100)
set @tablename= '你要的表名 '
exec( 'select * from '+@tablename)
create procedure Output_ConfigInfo3
@BSC varchar(2)
as
begin
declare @table varchar(30)
declare @sql varchar(4000)
set @table = 'dbo.tDistanceB'+@BSC
set @sql = 'select n.BSC,n.BTSNO,n.CELL,b.CI,n.NCI,d.DISTANCE,
(c.success+c.invalidPilotFail+c.blockFail+c.otherFail) as changeno,n.PILOT_PN,n.NCELLSYSTEM,n.NCELL
from dbo.oNeihtborhoodInfo n,dbo.tBaseStation b,'+@table+' d,dbo.oChange c
where n.BSC = b.BSC and n.BTSNO = b.BTSNO and n.CELL = b.CELL and b.CI = d.CI and n.NCI = d.NCI
and b.CI = c.CI and n.NCI = c.gCI'
exec(@sql)
end
@BSC varchar(2)
as
begin
declare @table varchar(30),@sql varchar(8000)
set @table = 'dbo.tDistanceB'+@BSC
set @sql='select n.BSC,n.BTSNO,n.CELL,b.CI,n.NCI,d.DISTANCE,
(c.success+c.invalidPilotFail+c.blockFail+c.otherFail) as changeno,n.PILOT_PN,n.NCELLSYSTEM,n.NCELL
from dbo.oNeihtborhoodInfo n,dbo.tBaseStation b,'+@table+' d,dbo.oChange c
where n.BSC = b.BSC and n.BTSNO = b.BTSNO and n.CELL = b.CELL and b.CI = d.CI and n.NCI = d.NCI
and b.CI = c.CI and n.NCI = c.gCI'
exec(@sql)end
@BSC varchar(2)
as
begin
declare @table varchar(30)
set @table = 'dbo.tDistanceB'+@BSC
exec('select n.BSC,n.BTSNO,n.CELL,b.CI,n.NCI,d.DISTANCE,(c.success+c.invalidPilotFail+c.blockFail+c.otherFail) as changeno,n.PILOT_PN,n.NCELLSYSTEM,n.NCELL
from dbo.oNeihtborhoodInfo n,dbo.tBaseStation b,'+@table+' d,dbo.oChange c
where n.BSC = b.BSC and n.BTSNO = b.BTSNO and n.CELL = b.CELL and b.CI = d.CI and n.NCI = d.NCI
and b.CI = c.CI and n.NCI = c.gCI')
end
@BSC varchar(2)
as
begin
declare @table varchar(30)
declare @sql varchar(255)
set @table = 'dbo.tDistanceB'+@BSC
set @sql='select n.BSC,n.BTSNO,n.CELL,b.CI,n.NCI,d.DISTANCE,(c.success+c.invalidPilotFail+c.blockFail+c.otherFail) as changeno,n.PILOT_PN,n.NCELLSYSTEM,n.NCELL
from dbo.oNeihtborhoodInfo n,dbo.tBaseStation b,'+@table+' d,dbo.oChange c
where n.BSC = b.BSC and n.BTSNO = b.BTSNO and n.CELL = b.CELL and b.CI = d.CI and n.NCI = d.NCI and b.CI = c.CI and n.NCI = c.gCI'
exec(@sql)
end
create procedure Output_ConfigInfo3
@BSC varchar(2)
as
begin
declare @table varchar(30)
declare @sql varchar(2000)
set @table = 'dbo.tDistanceB'+@BSC
set @sql='select n.BSC,n.BTSNO,n.CELL,b.CI,n.NCI,d.DISTANCE,(c.success+c.invalidPilotFail+c.blockFail+c.otherFail) as changeno,n.PILOT_PN,n.NCELLSYSTEM,n.NCELL
from dbo.oNeihtborhoodInfo n,dbo.tBaseStation b,'+
@table+' d,dbo.oChange c
where n.BSC = b.BSC and n.BTSNO = b.BTSNO and n.CELL = b.CELL and b.CI = d.CI and n.NCI = d.NCI
and b.CI = c.CI and n.NCI = c.gCI'
exec(@sql)
end
DECLARE @table VARCHAR(10)
SET @table = 'course'
EXEC('select * from'+' '+@table)