将多个查询组合到一个查询中(在SQL Server中,带有变量?)

时间:2013-06-21 20:19:22

标签: sql sql-server tsql variables

我希望将以下查询应用于其他两个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"命令。为了让变量在整个过程中起作用,我需要删除“去”。来自我的三个复制查询。

1 个答案:

答案 0 :(得分:1)

注意@copy_loc和@new_loc被定义为varchar(7),但是你要将12个字符放入其中。它们被截断,与表中的字段不匹配。使变量varchar(50)。别担心,它不会占用超出需要的空间。