• 博客园logo
  • 会员
  • 周边
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

无代码编程软件开发平台

软件开发新思路 企业应用软件的开发平台
  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

开放的设计思路-数据库表动态维护接口

这一节将向大家公开动态维护表的接口,同样也是存储过程,通过程序调用存储过程实现了数据库表字段的增加、修改,删除等操作。
前文已经发布过动态创建数据库的接口文件了,这一节将向大家公开动态维护表的接口,同样也是存储过程,通过程序调用存储过程实现了数据库表字段的增加、修改,删除等操作。
在修改数据库的过程,仍然支持SQLServer的应用规则,特别是对数据类型相互转换的约束,仍按照以下规则执行。



一、添加字段的存储过程

 1CREATE PROCEDURE [pfuncColumnsAdd]
 2@TableName nvarchar(500),
 3@ColName nvarchar(500),
 4@ColWdith nvarchar(100),
 5@DbType nvarchar(100),
 6@TableID nvarchar(6)
 7AS
 8if not exists (select * from syscolumns where id = object_id(N'crt_'+@TableId+'_'+@TableName+'') and name =@ColName)
 9 begin 
10  declare @Sql nvarchar(2000)
11  if @ColWdith='16'
12   begin
13    set @Sql='alter table crt_'+@TableId+'_'+@TableName+' add '+@ColName+' '+@DbType
14   end
15  else
16   begin
17    set @Sql='alter table crt_'+@TableId+'_'+@TableName+' add '+@ColName+' '+@DbType+'('+@ColWdith+') null'
18   end
19  exec(@Sql)
20  return 1--添加成功
21 end
22 
23else
24 begin
25  return 0--字段已经存在
26 end
27
28GO
29
30


二、修改字段的存储过程

 1CREATE PROCEDURE [pfuncColumnsAlter]
 2@TableName nvarchar(500),
 3@ColName nvarchar(500),
 4@ColWdith nvarchar(100),
 5@DbType nvarchar(100),
 6@OldName nvarchar(500),
 7@TableID nvarchar(6)
 8AS
 9 
10if exists (select * from syscolumns where id = object_id(N'crt_'+@TableId+'_'+@TableName+'') and name =@OldName)
11 begin  
12  Declare @Sql nvarchar(2000)
13  --set @Sql='Alter Table crt_'+@TableId+'_'+@TableName+' Alter Column '+@OldName+' '+@DbType+'('+@ColWdith+')'      
14  if @ColWdith<>'16'
15   begin
16    set @Sql='Alter Table crt_'+@TableId+'_'+@TableName+' Alter Column '+@OldName+' '+@DbType+'('+@ColWdith+')'
17   end
18  else  
19   begin
20    if @DbType <> 'ntext' and  @DbType<>'text'
21    begin
22     set @Sql='Alter Table crt_'+@TableId+'_'+@TableName+' Alter Column '+@OldName+' '+@DbType
23    end
24   end
25  exec(@Sql)
26  if(@ColName<>@OldName)
27  begin
28   Declare @Sql1 nvarchar(2000)
29   set @Sql1='sp_rename ''crt_'+@TableId+'_'+@TableName+'.'+@OldName+''', '''+@ColName+''''
30   exec(@Sql1)
31  end
32  RETURN 1
33 end 
34 else 
35 begin 
36   RETURN 0 --字段已经存在
37 end
38GO
39


三、删除字段的存储过程

 1CREATE PROCEDURE [pfuncColumnsDrop]
 2@TableName nvarchar(500),
 3@ColName nvarchar(500),
 4@TableID nvarchar(6)
 5AS
 6if exists (select * from syscolumns where id = object_id(N'crt_'+@TableId+'_'+@TableName+'') and name =@ColName)
 7 begin
 8  declare @Sql nvarchar(2000)
 9  set @Sql='alter table crt_'+@TableId+'_'+@TableName+' drop column '+@ColName  
10  exec(@Sql)
11   RETURN 1--删除成功
12 end
13else
14 begin  
15  RETURN 0--字段不存在 
16 end
17
18GO
19
20

 

欢迎大家讨论。

posted on 2008-01-26 22:21  宝齐  阅读(482)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3