SQL Server - Consulta sobre este código

 
Vista:

Consulta sobre este código

Publicado por achafio (37 intervenciones) el 30/01/2007 15:51:58
Estuve revisando un store procedure del mismo sql server, y hay cosas que no entiendo, por favor si podrian aclarar mis dudas.

*************************
Esta parte si es entendible, pero lo puse para que se puedan guiar del script que viene a continuación
*************************
SELECT @distribution_agent_id = id
FROM dbo.MSdistribution_agents
WHERE publisher_id = @publisher_id
AND publisher_db = @publisher_db
AND publication = @publication
AND subscriber_id = @subscriber_id
AND subscriber_db = @subscriber_db

*************************
Apartir de acá es mi duda
*************************
-- Get distribution agent summary
IF EXISTS <== Supongo que significa si existe algun valor del select anterior
(
SELECT *
FROM dbo.MSdistribution_history WITH (READPAST) <== Que significa READPAST
WHERE agent_id = @distribution_agent_id
)
BEGIN
SELECT TOP (1)
@distribution_status = runstatus,
@distribution_time = sys.fn_replformatdatetime(start_time),
@distribution_message = comments,
@distribution_duration = duration
FROM dbo.MSdistribution_history WITH (READPAST)
WHERE agent_id = @distribution_agent_id
ORDER BY time DESC, timestamp DESC
END
****************************
Por favor pueden explicarme el IF que es lo que está haciendo, que retorna o que valor toma el EXISTS que contiene ese select, y que significa WITH(READPAST) o porque colocan eso.
***************************

Gracias por las aclaraciones.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Consulta sobre este código

Publicado por Isaías (3308 intervenciones) el 30/01/2007 20:52:55
achafio

READPAST es una clausula de SQL SERVER 2005 para la instruccion FROM, Especifica que Database Engine (Motor de base de datos) no lea las filas bloqueadas por otras transacciones.

En cuanto a tu duda el IF EXISTS(), solo toma un TRUE, si existe o un FALSE, si no existe, entonces, hara la instruccion siguiente, si existe.

Tambien puedes hacer IF NOT EXISTS()
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar