代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
MSSQL
】
通过存储过程动态操作表中的列
作者:
天玺
/ 发布于
2016/2/1
/
990
动态操作表
-------------------------- /*使用方法 1.添加列 exec pro_AddColumn 表名,列名,类型/属性,'' 参数表 @tableName varchar(100), @columNname varchar(100), @DbType varchar(32), @Msg varchar(50) output 2.修改 exec pro_AddColumn 表名,列名,类型/属性,'' 参数表 @tableName varchar(100), @columNname varchar(100), @DbType varchar(32), @Msg varchar(50) output 3.删除 exec pro_AddColumn 表名,列名 参数表 @tableName varchar(100), @columNname varchar(100), @Msg varchar(50) output */ ---------------------------- --1、添加存储过程 if exists(select name from sysobjects where name='pro_AddColumn' and type='p') drop procedure pro_AddColumn go create procedure pro_AddColumn @tableName varchar(100),@columNname varchar(100),@DbType varchar(32),@Msg varchar(50) output as declare @flag char(1) set @flag=0 set @Msg='列添加失败!' /* 向指定表添加列 */ if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].['+@tablename+']') and objectProperty(id, N'IsUserTable') = 1) if (NOT exists ( select * from dbo.syscolumns where name =@columnname and id in (select id from dbo.sysobjects where id = object_id(N'[dbo].['+@tablename+']') and objectProperty(id, N'IsUserTable') = 1)) ) begin -- select 'not exist,now is adding...' 不存在,则添加 declare @cmdAddColumn varchar(100) select @cmdAddColumn='alter TABLE '+ @tablename+' ADD '+@columnname+' '+@DbType exec(@cmdAddColumn) set @flag=1 set @Msg='列添加成功!' end else begin -- select 'Existed !now is Deleteing......' -- exec pro_DropColumn @tablename,@columnname set @flag=1 set @Msg='列己存在!' end select @flag return @flag --2、删除存储过程 if exists(select name from sysobjects where name='pro_DropColumn' and type='p') drop procedure pro_DropColumn go create procedure pro_DropColumn @tableName varchar(100),@columNname varchar(100),@Msg varchar(50) output as /* 删除指定表指定列 */ begin declare @flag char(1) set @flag=0 set @Msg='列删除失败!' -------------------------------删除过程开始------------------------------------------------------ if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].['+@tablename+']') and objectProperty(id, N'IsUserTable') = 1) if (exists ( select * from dbo.syscolumns where name =@columnname and id in (select id from dbo.sysobjects where id = object_id(N'[dbo].['+@tablename+']') and objectProperty(id, N'IsUserTable') = 1)) ) begin --如果存在此表和此列 --------------------------------删除约束开始----------------------------------------------------- declare @tab varchar(100) declare @defname varchar(100) declare @cmd varchar(100) declare @cmdDel varchar(100) select @defname = name FROM sysobjects so JOIN sysconstraints sc ON so.id = sc.constid WHERE object_name(so.parent_obj) = @tablename AND so.xtype = 'D' AND sc.colid = (SELECT colid FROM syscolumns WHERE id = object_id(@tablename) AND name = @columnname) select @cmd='alter table '+ @tablename+ ' drop constraint '+ @defname if @cmd is null print 'No default constraint to drop' --删除己存在的约束 exec (@cmd) -------------------------------删除约束结束----------------------------------------------------------- -------------------------------删除指定列开始----------------------------------------------------------- select @cmdDel='alter table '+@tablename+' drop column '+ @columnname if @cmdDel is null begin print '列删除失败' set @flag=0 set @Msg='列删除失败!' end begin exec (@cmdDel) set @flag=1 set @Msg='列删除成功!' end -------------------------------删除指定列结束------------------------------------------------------ end -------------------------------删除过程结束---------------------------------------------------- else --不存在些列,不用删除 begin set @flag=1 set @Msg='指定列不存在!' end ------------------------------------------------------------------------------------- select @flag return @flag end GO --3、修改存储过程 if exists(select name from sysobjects where name='pro_AlterColumn' and type='p') drop procedure pro_AlterColumn go create procedure pro_AlterColumn @tableName varchar(100),@columNname varchar(100),@DbType varchar(32),@Msg varchar(50) output as declare @flag char(1) set @flag=0 set @Msg='列添加失败!' /* 查找表中的列 */ if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].['+@tablename+']') and objectProperty(id, N'IsUserTable') = 1) if ( exists ( select * from dbo.syscolumns where name =@columnname and id in (select id from dbo.sysobjects where id = object_id(N'[dbo].['+@tablename+']') and objectProperty(id, N'IsUserTable') = 1)) ) begin -- select 'Existsed ,now is alterring...' 修改 declare @cmdAddColumn varchar(100) select @cmdAddColumn='alter TABLE '+ @tablename+' alter column '+@columnname+' '+@DbType exec(@cmdAddColumn) set @flag=1 set @Msg='修改成功!' end else begin -- select 'not existed !' 不存在要修改的列 set @flag=1 set @Msg='列己不存在!' end select @flag return @flag
试试其它关键字
存储过程
同语言下
.
SQL查询 多列合并成一行用逗号隔开
.
查看存储过程修改时间,最近执行时间
.
设置手动批量删除数据库相关进程
.
获取某个表中特定字段的所有字符串形式
.
SQL 如何去除重复的字符串
.
怎么去掉一个字段中的重复数据
.
String 去除空格 回车 换行 水平制表符
.
SQL查询和替换含有回车,空格,TAB
.
SQL SERVER 查询每日新增用户数量、次留数量
.
判断两个字符串是否存在相同的内容
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
天玺
贡献的其它代码
(
10
)
.
java获取客服端信息的方法(系统,浏览器等)
.
实现重复选择同一项,可以连续触发事件
.
Java生成验证码并进行验证
.
微信APP支付响应回调信息
.
判断一个字符串中是否包含另一个字符串数组或列表中的
.
纯html实现将网页页面分享到微信朋友圈添加缩略图图片
.
当前页面导航高亮
.
并行编程小例和高精度时间小例
.
通过存储过程动态操作表中的列
.
缓存函数
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3