关于在存储过程中动态选择数据表名

系统 1160 0
今天写一个功能,要求站点页面根据不同的城市显示当前城市的内容。这个功能主要是分析用户的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

关于在存储过程中动态选择数据表名


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论