1
上網(wǎng)搜集了很多資料,終于寫出可以執(zhí)行的一個存儲過程了,如下:
2
3
SET
ANSI_NULLS
ON
4
GO
5
SET
QUOTED_IDENTIFIER
ON
6
GO
7
8
--
重點(diǎn)開始了
9
CREATE
PROCEDURE
[
dbo
]
.
[
hrmis_counts
]
10
11
AS
12
BEGIN
13
--
聲明游標(biāo)
14
Declare
MyCursor
Cursor
15
For
Select
name
From
hrmis..sysobjects
where
xtype
=
'
u
'
16
--
"hrmis"是我需要查詢的數(shù)據(jù)庫名稱
17
--
"xtype='u'"的意思是:只查詢用戶表,系統(tǒng)表不要,但可能會出錯,網(wǎng)上有資料防止這種意外,至少我沒有報(bào)錯,就不理了。
18
19
--
打開游標(biāo)
20
Open
MyCursor
21
--
定義變量
22
Declare
@tableName
nvarchar
(
max
),
@sql
nvarchar
(
max
),
@counts
int
23
Fetch
Next
From
MyCursor
Into
@tableName
24
While
@@Fetch_status
=
0
25
--
@@Fetch_status = 0是指:游標(biāo)未到末尾
26
Begin
27
Set
@sql
=
'
Select @counts=count(*) From
'
+
@tableName
28
--
print @sql
29
--
Exec(@sql)
30
--
上面這句會報(bào)錯的“@counts未定義之類的,我忘了,有興趣自己試試”,反正不能直接執(zhí)行就是了。
31
--
正確的寫法是下面這句
32
Exec
sp_executesql
@sql
,N
'
@counts Int out
'
,
@counts
out
33
--
好吧,我承認(rèn)我也不太了解這條語句的含意,但這是不重點(diǎn),重點(diǎn)是,它執(zhí)行成功了。
34
If
@counts
>
10000
35
--
只顯示記錄數(shù)大于1W的表名(這里隨意就好了,不要也行)
36
print
(
Convert
(
nvarchar
(
max
),
@counts
)
+
'
......
'
+
@tableName
)
37
Fetch
Next
From
MyCursor
Into
@tableName
38
End
39
--
關(guān)閉游標(biāo)
40
Close
MyCursor
41
Deallocate
MyCursor
42
End
43
GO
保存一下,然后執(zhí)行此存儲過程,就可以自動遍歷數(shù)據(jù)庫中的所有表(647個表哇,蛋疼),然后把記錄數(shù)大于1W的表名跟相應(yīng)的記錄數(shù)都顯示出來,統(tǒng)計(jì)就不用這么麻煩了。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

