2016-10-26 100 views
1

使用做一个INSERT语句与SQL statment 做的时候,如果语句中使用以下想与运行SELECT语句

Insert tablename (column1, column2) 
select statement 

有没有办法来格式化if语句,这样,如果varible设置你会运行插入语句。这是我有,但它显示了错误的结束语句,所以我需要帮助

if @runthis=1 

begin 
insert tablename (column1, column2) 
end 
select column1, column2 

回答

2

如果使用IF之后开始,你还必须包括INSERT后结束,而不是在INSERT中间..选择。

像这样:

if @runthis=1 

begin 
insert tablename (column1, column2) select column1, column2 
end 

从技术上讲,只要在您的评论描述了通过使用动态SQL这样你可以避免使用ELSE:

DECLARE @SQL varchar(max) = ''; 

if @runthis=1 

begin 
SET @SQL = 'insert tablename (column1, column2) '; 
end 

SET @SQL = @SQL + 'select column1, column2'; 

EXECUTE (@SQL); 

就个人而言,我会用一个ELSE代替虽然。

+0

我的目标是不是非得有一个人,但要能够运行SELECT语句,如果runthis不为1,如果是1点来看,它作为插件的一部分 – schalld

+0

没有'ELSE'就不可能。那么,你可以通过使用动态sql来避免ELSE,但我不会建议它。使用ELSE会执行得更快。 –

+0

所以如果我有一个在其中具有文字的sql语句,如下所示。我将如何处理字符串终止 – schalld

2

IF条件中使用的语句应该是有效的。在其他答案中指出了使用IF条件的正确方法。

这里是另一种方式

insert tablename (column1, column2) 
select column1, column2 
Where @runthis=1 
+0

我的目标是不必有别的,但能够运行选择语句,如果runthis不是1,如果它是1运行它作为插入的一部分 – schalld