电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

数据库骚操作2——列名获取

来源:金蝶云社区作者:金蝶2024-09-166

数据库骚操作2——列名获取

后台数据库操作的时候,有时候需要将数据从备份表中插回到系统表里。虽然可以简单的用insert into t_gl_balance select * from t_gl_balancebak,但是在以下场景不能直接使用:

1、包含种子列

2、包含计算列

3、包含时间戳

4、源表中列的排序与目标表中列的排序不相同,因为上面语句并没有显式列出列名

这种情况,就需要显式列出所有的列名了。显式列出所有的列名,一两个表还算可以,多个表就让人头痛了,那么,有什么简单快捷的方法可以获取所有普通列的列名呢?

当。。。当。。。当。。。当。。。

【存储过程】

可以直接使用以下存储过程:

注意:下面方案没有排除种子列,因为种子列是可以通过修改表的参数为允许插入种子列来规避直接插入报错问题。

--存储过程

if exists (select 1 from sys.objects where name='sp_columncollect' and type='P')

drop  procedure sp_columncollect

go

create  procedure sp_columncollect

@ftablename nvarchar(100),

@string nvarchar(2000) out

as 

if  not exists (select 1 from sys.tables where name like 'hb_columncollect')

create table hb_columncollect(ffieldname nvarchar(100) ,fid int )

delete from hb_columncollect

exec('insert into hb_columncollect(ffieldname,fid)

     select name,column_id from sys.columns t where object_id=OBJECT_ID('''+@ftablename+''') an

数据库骚操作2——列名获取

后台数据库操作的时候,有时候需要将数据从备份表中插回到系统表里。虽然可以简单的用insert into t_gl_balance select * from t_gl_b...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信