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

