今天寫一個功能,要求站點頁面根據不同的城市顯示當前城市的內容。這個功能主要是分析用戶的Ip,根據Ip獲取用戶所在的城市,然后選擇用戶所在城市的內容。由于數據庫架構是不同城市的內容分別放在不同的表中,如tb_1_Info, tb_2_Info,其中的數字就是城市對應的編號。在完成這個功能的過程中,我對數據庫訪問的用的是存儲過程,但以前沒有碰到在存儲過程中動態的選擇數據表名稱。經過一段時間摸索,還是實現了這個功能,特記錄一下:
存儲過程代碼如下:
存儲過程代碼如下:
?1
ALTER
?
PROCEDURE
?
[
dbo
]
.
[
ap_BuyAndSaleAction
]
????
?2
????
@DataAction
?
int
,
?3
????
@ID
?
int
?
=
?
0
,
?4
????
@UserID
?
int
,
?5
????
.
?6
????
@TableNum
?
nvarchar
(
20
)
--
外部函數傳入的不同表的參數
?7
AS
?8
if
?
@DataAction
=
0
--
操作代碼:添加、更新、刪除標記
?9
BEGIN
10
????
declare
?
@select
?
varchar
(
1000
)
11
????
select
?
@select
?
=
?
'
insert?into?[tb_
'
+
rtrim
(
@TableNum
)
+
'
_BuyAndSale]
12
????(
13
????????[UserID],
14
????????????????
.
15
????)?
16
????values
17
????(????????
18
????????@UserID,
19
????????
.
20
????)
'
21
?
EXEC
(
@select
)
22
????
set
?
23
????????
@ID
=
scope_identity
()
24
end
25
if
?
@DataAction
=
1
26
begin
27
????
declare
?
@update
?
varchar
(
1000
)
28
????
select
?
@update
?
=
'
UPDATE?[tb_
'
+
rtrim
(
@TableNum
)
+
'
_BuyAndSale]?SET
29
????????[UserID]?=?@UserID,
30
????????
.
31
????WHERE
32
????????
33
????????[ID]?=?@ID
'
34
????
exec
(
@update
)
35
end
36
if
?
@DataAction
=
2
37
begin
38
????
declare
?
@delete
?
varchar
(
100
)
39
????
select
?
@delete
?
=
?
'
delete?from?[tb_
'
+
rtrim
(
@TableNum
)
+
'
_BuyAndSale]?where??[ID]?=?@ID
'
40
????
exec
(
@delete
)
41
end
42
select
?
@ID

?2

?3

?4

?5


?6

?7

?8

?9

10

11

12

13

14


15

16

17

18

19


20

21

22

23

24

25

26

27

28

29

30


31

32

33

34

35

36

37

38

39

40

41

42

更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
