繁体   English   中英

将多个查询合并为一个查询(在SQL Server中,是否带有变量?)

[英]combining a multiple queries into a single query (in SQL Server, with 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'

我还删除了两个选择变量语句(@copy_loc和@new_loc),因为它们已被声明。

有什么想法为什么对我不起作用? 我将不胜感激。 不用说,我一般对SQL还是很陌生。

**编辑:“没有工作”是指查询运行没有错误,但未对“新位置”进行任何更改。

*第二编辑:我认为问题可能出在“执行”命令上。 为了使变量始终有效,我需要从三个重复的查询中删除“ go”。

注意,@copy_loc和@new_loc被定义为varchar(7),但是您要在其中输入12个字符。 它们被截断,将与表中的字段不匹配。 使变量varchar(50)。 不用担心,它不会使用比所需更多的空间。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM