想要使用if语句运行select语句

时间:2016-10-26 17:42:58

标签: sql-server sql-server-2008 tsql

使用带有sql语句的insert语句时 执行以下操作

Insert tablename (column1, column2)
select statement

是否有办法格式化if语句,以便在设置varible时运行insert语句。这就是我所拥有的,但它显示错误的结束语句,所以我需要帮助

if @runthis=1 

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

2 个答案:

答案 0 :(得分:2)

如果在IF之后使用BEGIN,则必须在INSERT之后包含END,而不是在INSERT..SELECT的中间。

像这样:

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代替。

答案 1 :(得分:2)

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

这是另一种方式

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