我希望将以下查询应用于其他两个circ_slip值('付款'以及'退款'),用于大量地点。
delete from circ_slip_field
where location = 'NEW LOCATION' and circ_slip = 'waive'
go
declare @copy_loc varchar(7), @new_loc varchar(7)
select @copy_loc = 'OLD LOCATION'
select @new_loc = 'NEW LOCATION'
insert circ_slip_field
(circ_slip,location,section,ord,circ_slip_field_type,label,field_column,
append_to_prev,justify,max_field_len,min_field_len,data_mask)
select circ_slip,@new_loc,section,ord,circ_slip_field_type,label,field_column,
append_to_prev,justify,max_field_len,min_field_len,data_mask
from circ_slip_field
where circ_slip = 'waive' and location = @copy_loc
所以我在开头添加了以下行,然后将原始查询复制了三次,取代了两个'放弃'与'付款'和'退款'分别
declare @copy_loc varchar(7), @new_loc varchar(7)
select @copy_loc = 'COPY LOCATION'
select @new_loc = 'NEW LOCATION'
我还删除了两个select变量语句(@copy_loc和@new_loc),因为它们已经被声明了。
为什么这对我不起作用的任何想法?我将非常感激。毋庸置疑,我对SQL一般都很陌生。
**编辑:"没有工作"我的意思是查询运行没有错误,但没有对新位置进行任何更改。
* 第二次编辑:我认为问题可能出在" go"命令。为了让变量在整个过程中起作用,我需要删除“去”。来自我的三个复制查询。
答案 0 :(得分:1)
注意@copy_loc和@new_loc被定义为varchar(7),但是你要将12个字符放入其中。它们被截断,与表中的字段不匹配。使变量varchar(50)。别担心,它不会占用超出需要的空间。