SQL - 如果行数大于,则插入

时间:2014-03-11 12:48:12

标签: sql sql-server oracle

我创建了一个SQL查询,它将从Oracle链接服务器返回行。查询工作正常,例如,将返回40行。如果返回的行数大于40,我希望结果只插入表中。

我的想法是,我可以创建一个触发器,发出一封电子邮件,说明该号码已被破坏。

4 个答案:

答案 0 :(得分:2)

DECLARE @cnt INT

SELECT @cnt = COUNT(*) FROM LinkedServer.database.schemaname.tablename

IF @cnt > 40

INSERT INTO table1 VALUES(col1, col2, col3 .....)

答案 1 :(得分:0)

在sqlserver中创建过程并使用count()函数进行行计数的条件检查或使用@@ ROWCOUNT。

if ((select count(*) from Oraclelinkservertable) > 40)
begin
-- code for inserting in your table
Insert into tablename
select * from Oraclelinkservertable
end

答案 2 :(得分:0)

让我们说查询是:

select a.*
from remote_table a

现在您可以修改查询:

select a.*, count(*) over () as cnt
from remote_table a

并将包含行数。

接下来,

select * 
from (
select a.*, count(*) over () as cnt
from remote_table a
)
where cnt > 40;
仅当行数大于40时,

才会返回。

你所要做的就是

insert into your_table
select columns 
from (
select columns, count(*) over () as cnt
from remote_table a
)
where cnt > 40;

并且只有在源中包含超过40行时才会插入。

答案 3 :(得分:0)

尝试使用OFFSET。

SELECT * FROM tableName ORDER BY colName OFFSET 40 ROWS