在MS SQL中怎麼用一個變量表示Table(對象).(100分)

  • 主题发起人 sumingfei
  • 开始时间
S

sumingfei

Unregistered / Unconfirmed
GUEST, unregistred user!
在MS SQL中怎麼用一個變量表示Table.

例如:
系統中用到結構相同的10個表,如下所示:
T1
T2
T3
.
.
.
T10

現在需要在一個存儲過程中判斷其中哪個表中有數據

if (Select count(*) from T1) > 0
...
if (Select Count(*) from T2) > 0
...
if (Select Count(*) from T3) > 0
...
if (Select Count(*) form T10) >0

這樣做實在是太麻煩了,因為系統中在很多地方需要針對某個表操作,
而表的編號只能根據變量值臨時确定, 所以免不了不有很多的if ..else if ...else if ...,
或者是寫些函數(注:函數可以返回數據表,但對于一些較為復雜的查詢無法返回, 并且無法更新).


不知道哪位富翁有好的解決辦法, 我的目的可以簡化為:
(假設以下語句可以正确運行)

declare @a varchar(30)
set @a = 'T1'
Select count(*) from @a

或者是

declare @i int
exec('Select @i = count(*) from T1')
print @i

或者是

ALTER FUNCTION ufGetTable (@id int)
RETURNS TABLE
as
if @id = 1
return (Select * from T1)
else
if @id = 2
return (Select * from T2)
else
return (Select * from T3)

您是否可以使以上語句運行成功(修改後), 也可以換種方式, 但都要達到相同的效果.

注: 建立結構相同的表是為緩解某一個表數據量.
 
create proc proc_count
@tablename varchar(50),
@count=0 int
as
declare @strsql(200)
set @strsql='select count(*) form '+@tablename
set @count=exec(@strsql)
return @count

 
顶部