SQL – Insertar si el número de filas es mayor que

Creé una consulta SQL que devolverá las filas de un server vinculado a Oracle. La consulta funciona bien y devolverá 40 filas, por ejemplo. Me gustaría que los resultados solo se inserten en una tabla si el número de filas devuelto es mayor que 40.

Mi pensamiento sería que podría crear un desencadenador para desencadenar un correo electrónico y decir que se ha infringido el número.

 DECLARE @cnt INT SELECT @cnt = COUNT(*) FROM LinkedServer.database.schemaname.tablename IF @cnt > 40 INSERT INTO table1 VALUES(col1, col2, col3 .....) 

Cree el Procedimiento en sqlserver y use la function count () para la verificación condicional del recuento de filas o use @@ ROWCOUNT.

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

Digamos que la consulta es:

 select a.* from remote_table a 

Ahora puedes modificar la consulta:

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

y contendrá el número de filas.

Siguiente,

 select * from ( select a.*, count(*) over () as cnt from remote_table a ) where cnt > 40; 

regresará solo si el número de filas es mayor a 40.

Todo lo que tienes que hacer es

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

e insertá solo si tiene más de 40 filas en la fuente.

Intenta usar OFFSET.

 SELECT * FROM tableName ORDER BY colName OFFSET 40 ROWS