【发布时间】:2014-04-25 13:51:21
【问题描述】:
假设我的 SQL Server 2008 DB 中的表有以下插入语句:
INSERT INTO MyTable
([Val1], [Val2], [Val3], [Val4])
VALUES
('val1', 'val2' 'val3', 'val4_a'),
('val1', 'val2' 'val3', 'val4_b'),
('val1', 'val2' 'val3', 'val4_c'),
('val1', 'val2' 'val3', 'val4_d');
换句话说,[Val1] 到 [Val3] 的所有值都保持不变,但 [Val4] 不断变化。
我正在考虑按照以下方式做一些事情:
Declare @Val1 varchar(10)
Declare @Val2 varchar(10)
Declare @Val3 varchar(10)
Declare @Val4 ... some kind of list of varchar(10) ...
Set @Val1 = 'val1'
Set @Val2 = 'val2'
Set @Val3 = 'val3'
Set @Val4 = ('val4_a', 'val4_b', 'val4_c', 'val4_d')
然后通过@Val4 进行某种循环,在这种情况下只需要编写一个插入语句。这样可以非常轻松地更改/更新,并使我的生活变得更加轻松!
我知道这行不通——我只是把它作为我希望完成的一个例子——但是做这样的事情最好的方法是什么?
谢谢,我希望这个问题有意义!!
【问题讨论】:
-
@Val4 的值从何而来?它是一个序列,还是从客户端传递到过程中的东西?
-
我会自己输入它们...想象一下我必须为几个汽车制造商更新这个数据库,我必须选择为哪个制造商做它...有时可能只有 2 个,比如
('Ford', 'BMW'),其他时候可能是 10... 它根据客户要求而变化。 -
那么 Gordon 的回答应该可以正常工作。
-
@dean,请查看我对他的回复...这意味着注释掉一些更新语句/添加新语句,因为
@Val4中的值数量发生了变化...
标签: sql sql-server sql-server-2008 tsql sql-insert