我创建了一个SQL查询,它将从Oracle链接服务器返回行。查询工作正常,例如,将返回40行。如果返回的行数大于40,我希望结果只插入表中。
我的想法是,我可以创建一个触发器,发出一封电子邮件,说明该号码已被破坏。
答案 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