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)
您是否可以使以上語句運行成功(修改後), 也可以換種方式, 但都要達到相同的效果.
注: 建立結構相同的表是為緩解某一個表數據量.
例如:
系統中用到結構相同的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)
您是否可以使以上語句運行成功(修改後), 也可以換種方式, 但都要達到相同的效果.
注: 建立結構相同的表是為緩解某一個表數據量.