当前位置:  开发笔记 > 编程语言 > 正文

构建临时表/地图

如何解决《构建临时表/地图》经验,为你挑选了1个好方法。

我正在使用如下定义的临时表在SQL Server 2000中处理存储过程:

CREATE TABLE #MapTable (Category varchar(40), Code char(5))

创建表后,我想插入一些标准记录(然后在程序中动态补充).每个类别(大约10个)将有几个代码(通常为3-5),我想在一个语句中表达每个类别的插入操作.

知道怎么做吗?

到目前为止,我所拥有的最好的想法是将数据库中的真实表作为模板,但我真的希望尽可能避免这种情况.这将存在的数据库是大型机系统的快照,这样整个数据库每晚都被吹走并在批处理过程中重新创建 - 存储过程在流程结束时从源代码控制中重新加载.

我试图解决的问题不是将它保留在一个语句中,因为它试图避免一遍又一遍地重新键入类别名称.



1> Bob Probst..:

DJ是一个很好的解决方案,但可以简化(见下文).

为什么需要单一声明?

有什么不对:

insert into #MapTable (category,code) values ('Foo','AAAAA')
insert into #MapTable (category,code) values ('Foo','BBBBB')
insert into #MapTable (category,code) values ('Foo','CCCCC')
insert into #MapTable (category,code) values ('Bar','AAAAA')

对我来说,这更容易阅读和维护.


简化的DJ解决方案:

CREATE TABLE #MapTable (Category varchar(40), Code char(5))

INSERT INTO #MapTable (Category, Code)
SELECT 'Foo', 'AAAAA'
UNION
SELECT 'Foo', 'BBBBB'
UNION
SELECT 'Foo', 'CCCCC' 

SELECT * FROM #MapTable

DJ没什么特别的错,对我来说感觉太复杂了.


来自OP:

我试图解决的问题不是将它保留在一个语句中,因为它试图避免一遍又一遍地重新键入类别名称.

我感觉到你的痛苦 - 我也试图找到这样的捷径,并意识到当我解决问题时,我可以长时间输入它.

如果我要输入大量重复数据,我有时会使用Excel为我生成插入代码.将类别放在一列中,将代码放在另一列中; 使用所有有用的复制技术来完成艰苦的工作

然后

="insert into #MapTable (category,code) values ('"&A1&"','"&B1&"')"

在第三行,我已经生成了我的插入

当然,所有这些都假设无法从系统表中提取类别和代码.

推荐阅读
跟我搞对象吧
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有