`
seawavenews
  • 浏览: 231727 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

T-SQL在已经有列中插入一列,并更新(Alert,Update)

阅读更多

 

 

 

 

 

--开启系统表写功能,不然无法创建存储过程  
  exec   sp_configure   'allow   updates',1   reconfigure   with   override  
  go  
   
  if   exists   (select   *   from   dbo.sysobjects   where   id   =   object_id(N'[dbo].[p_addfield]')   and   OBJECTPROPERTY(id,   N'IsProcedure')   =   1)  
  drop   procedure   [dbo].[p_addfield]  
  GO  
   
  /*--在指定位置添加字段  
   
  添加字段到表中的指定位置  
  注意,字段定义必须符合   alter   table   add   ...的规定  
  插入的位置从0开始,到字段数目-1结束  
  如果超过这个范围,则在表的尾部添加字段  
  一次只能添加一个字段,和   alter   table   的限制完全一样  
   
  --邹建   2004.07(引用请保留此信息)--*/  
   
  /*--使用示例  
  --测试表  
  create   table   tb(a   int)  
   
  --添加字段  
  exec   p_addfield   'tb','id   int',0 --在最前面添加字段  
  exec   p_addfield   'tb','id1   int',0  
  exec   p_addfield   'tb','id2   int',2   --在第2个字段前面添加字段  
   
  --显示添加结果  
  select   *   from   tb  
   
  --删除测试  
  drop   table   tb  
  --*/  
  create   proc   p_addfield  
  @tbname   sysname,  
  @fd_define   nvarchar(1000), --字段定义(必须是合法的字段定义)  
  @colid   int=-1 --添加位置:0--fieldcount-1,0表示在第一个字段前插入,-1或效的colid表示插入在最后  
  as  
  declare   @s   nvarchar(4000)  
   
  if   isnull(objectproperty(object_id(@tbname),'IsUserTable'),0)=0  
  begin  
  select   错误='无效的表名'  
  return  
  end  
   
  --添加字段  
  set   @s='alter   table   ['+replace(@tbname,']',']]')+']   add   '+@fd_define  
  exec(@s)  
   
  --如果是添加在所有字段的未尾,则直接返回即可  
  if   not   exists(select   1   from   syscolumns   where   id=object_id(@tbname)   and   colid   between   1   and   @colid+1)  
  return  
   
  --开启系统表写开关  
  exec   sp_configure   'allow   updates',1   reconfigure   with   override  
   
  set   xact_abort   on  
  begin   tran  
  update   syscolumns   set   colid=colid+1  
  where   id=object_id(@tbname)  
  and   colid>@colid  
   
  update   syscolumns   set   colid=@colid+1  
  where   id=object_id(@tbname)  
  and   colid=(  
  select   max(colid)   from   syscolumns    
  where   id=object_id(@tbname))  
  commit   tran  
   
  --关闭系统表写开关  
  exec   sp_configure   'allow   updates',0   reconfigure   with   override  
  go  
   
   
  --关闭系统表写功能  
  exec   sp_configure   'allow   updates',0   reconfigure   with   override  
  go  
  ----------------------   
 

分享到:
评论

相关推荐

    Excel导入SQL数据库完整代码

    Response.Write("<script language='javascript'>alert('" + insertCount + "条记录插入成功" + updateCount + "条记录更新成功" + errorCount + "条记录未处理');</script>"); } catch (Exception ex) { ...

    Oracle常用傻瓜问题1000问

    - 索引:加速数据查询的结构,可以基于一列或多列创建。 - 视图:虚拟表,基于一个或多个表的查询结果。 2. **SQL语言**: - SELECT语句:用于从表中检索数据,可以使用WHERE子句进行条件筛选。 - INSERT语句:...

    oracle常用命令(txt文件)

    根据提供的文件信息,我们可以归纳出一系列与Oracle数据库相关的常用命令及操作知识点。这些知识点主要涉及用户管理、权限分配以及角色管理...在实际应用过程中,还需要根据具体需求灵活运用各种命令来完成不同的任务。

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    其一、就业面广:全球前100强企业99家都在使用ORACLE相关技术,中国政府机构,大中型企事业单位都能有ORACLE技术的工程师岗位。 其二、技术层次深:如果期望进入IT服务或者产品公司(类似毕博、DELL、IBM等),...

    2021-2022计算机二级等级考试试题及答案No.9123.docx

    3. JavaScript 弹窗:在JavaScript中,使用`alert()`函数可以在浏览器中弹出一个包含指定文本的警告对话框。正确答案是A。 4. 内联函数:内联函数是在编译时展开的函数,适用于小且频繁调用的函数,以减少调用开销...

    web开发中ASP常用技巧代码

    - **解释**:此命令向指定表中插入一条新记录。 9. **统计聚合函数** - `AVG(column)`:计算平均值。 - `COUNT(column)`:计算非空值的数量。 - `MAX(column)`:找到最大值。 - `MIN(column)`:找到最小值。 ...

    gridview 一些基本操作

    在这个示例中,`DbHelperSQL.GetTable`方法用于执行 SQL 查询并返回一个`DataTable`对象。然后,这个`DataTable`对象被设置为`GridView`的数据源,最后调用`GridView1.DataBind()`方法进行数据绑定。 #### 三、添加...

    数据库基础

    第一部分 Oracle SQL*PLUS基础 23 第一章 Oracle数据库基础 23 §1.1 理解关系数据库系统(RDBMS) 23 §1.1.1 关系模型 23 §1.1.2 Codd十二法则 24 §1.2 关系数据库系统(RDBMS)的组成 24 §1.2.1 RDBMS 内核 24...

    Oracle8i_9i数据库基础

    第一部分 Oracle SQL*PLUS基础 23 第一章 Oracle数据库基础 23 §1.1 理解关系数据库系统(RDBMS) 23 §1.1.1 关系模型 23 §1.1.2 Codd十二法则 24 §1.2 关系数据库系统(RDBMS)的组成 24 §1.2.1 RDBMS 内核 24...

    oracle 帮助文档 带sqlplus命令

    2. **SQL语言基础**:包括数据查询(SELECT)、数据插入(INSERT)、数据更新(UPDATE)、数据删除(DELETE)等基本操作,以及联接(JOIN)、子查询、集合操作等高级概念。 3. **SQL*Plus介绍**:SQL*Plus的界面、...

    db2与oracle差别.pdf

    例如:CONNECT BY 递归语句、(+)连接操作符、DUAL 表、ROWNUM 伪列、ROWID 伪列、MINUS 操作符、SELECT INTO FOR UPDATE 语句、TRUNCATE TABLE 等。如果要在 DB2 数据库上运行使用了上述方言的应用,就需要进行...

    Oracle 10g实验1-4.zip

    4. **DML操作**:插入(INSERT)、更新(UPDATE)、删除(DELETE)数据的基本操作。 5. **视图**:创建和使用视图,理解其在数据抽象和权限控制中的作用。 实验三可能涉及数据库的高级操作和管理: 1. **索引**:...

    oracle初学者1000问

    2. **SQL语言基础**:掌握SQL(Structured Query Language)的基本语法,包括SELECT语句用于查询数据,INSERT用于插入数据,UPDATE用于更新数据,DELETE用于删除数据,以及DML(Data Manipulation Language)的事务...

    asp.net常用代码

    在ASP.NET应用中,使用SQL Server时,可以通过以下语句获取当前系统时间以及最近一次插入操作产生的自增ID: ```sql SELECT '当前时间:' + CONVERT(char(20), GETDATE(), 120); SELECT @@IDENTITY AS 'Identity'; `...

    IT技术文章示例

    SELECT INTO FROM INSERT INTO SELECT是一种常见的SQL语句组合,用于将查询结果插入另一个表中。这种语句在数据迁移、数据复制等场景下非常有用。使用时需要注意源表和目标表的字段类型和数量是否匹配,以及是否需要...

    java面试题续

    `将输出`undefined`,因为`a=b`赋值后返回`b`的值,即`20`,但`alert`在打印前会先进行一次隐式类型转换,由于`a`未被赋值,故为`undefined`;`alert(a==b);`输出`false`,因为此时`a`仍然为`undefined`,不等于`b`...

Global site tag (gtag.js) - Google Analytics