--开启系统表写功能,不然无法创建存储过程
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
----------------------
分享到:
相关推荐
Response.Write("<script language='javascript'>alert('" + insertCount + "条记录插入成功" + updateCount + "条记录更新成功" + errorCount + "条记录未处理');</script>"); } catch (Exception ex) { ...
- 索引:加速数据查询的结构,可以基于一列或多列创建。 - 视图:虚拟表,基于一个或多个表的查询结果。 2. **SQL语言**: - SELECT语句:用于从表中检索数据,可以使用WHERE子句进行条件筛选。 - INSERT语句:...
根据提供的文件信息,我们可以归纳出一系列与Oracle数据库相关的常用命令及操作知识点。这些知识点主要涉及用户管理、权限分配以及角色管理...在实际应用过程中,还需要根据具体需求灵活运用各种命令来完成不同的任务。
其一、就业面广:全球前100强企业99家都在使用ORACLE相关技术,中国政府机构,大中型企事业单位都能有ORACLE技术的工程师岗位。 其二、技术层次深:如果期望进入IT服务或者产品公司(类似毕博、DELL、IBM等),...
3. JavaScript 弹窗:在JavaScript中,使用`alert()`函数可以在浏览器中弹出一个包含指定文本的警告对话框。正确答案是A。 4. 内联函数:内联函数是在编译时展开的函数,适用于小且频繁调用的函数,以减少调用开销...
- **解释**:此命令向指定表中插入一条新记录。 9. **统计聚合函数** - `AVG(column)`:计算平均值。 - `COUNT(column)`:计算非空值的数量。 - `MAX(column)`:找到最大值。 - `MIN(column)`:找到最小值。 ...
在这个示例中,`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...
第一部分 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...
2. **SQL语言基础**:包括数据查询(SELECT)、数据插入(INSERT)、数据更新(UPDATE)、数据删除(DELETE)等基本操作,以及联接(JOIN)、子查询、集合操作等高级概念。 3. **SQL*Plus介绍**:SQL*Plus的界面、...
例如:CONNECT BY 递归语句、(+)连接操作符、DUAL 表、ROWNUM 伪列、ROWID 伪列、MINUS 操作符、SELECT INTO FOR UPDATE 语句、TRUNCATE TABLE 等。如果要在 DB2 数据库上运行使用了上述方言的应用,就需要进行...
4. **DML操作**:插入(INSERT)、更新(UPDATE)、删除(DELETE)数据的基本操作。 5. **视图**:创建和使用视图,理解其在数据抽象和权限控制中的作用。 实验三可能涉及数据库的高级操作和管理: 1. **索引**:...
2. **SQL语言基础**:掌握SQL(Structured Query Language)的基本语法,包括SELECT语句用于查询数据,INSERT用于插入数据,UPDATE用于更新数据,DELETE用于删除数据,以及DML(Data Manipulation Language)的事务...
在ASP.NET应用中,使用SQL Server时,可以通过以下语句获取当前系统时间以及最近一次插入操作产生的自增ID: ```sql SELECT '当前时间:' + CONVERT(char(20), GETDATE(), 120); SELECT @@IDENTITY AS 'Identity'; `...
SELECT INTO FROM INSERT INTO SELECT是一种常见的SQL语句组合,用于将查询结果插入另一个表中。这种语句在数据迁移、数据复制等场景下非常有用。使用时需要注意源表和目标表的字段类型和数量是否匹配,以及是否需要...
`将输出`undefined`,因为`a=b`赋值后返回`b`的值,即`20`,但`alert`在打印前会先进行一次隐式类型转换,由于`a`未被赋值,故为`undefined`;`alert(a==b);`输出`false`,因为此时`a`仍然为`undefined`,不等于`b`...