Eu tenho um procedimento armazenado que está recebendo id como entrada. Se o id recebido for 0, precisamos excluir todas as linhas, caso contrário, precisamos excluir apenas as linhas que correspondem ao id de entrada.
Posso fazer isso dividindo minha consulta usando um if-else, mas esse é o problema aqui, queremos fazer isso em uma única consulta usando JOINS
e CASE
(pode ser).
Aqui está a minha mesa.
CREATE TABLE InfineonFiles (
infimax INTEGER NOT NULL,
neonId INTEGER NOT NULL,
eTime INTEGER NOT NULL,
pTime INTEGER NOT NULL,
cisId INTEGER NOT NULL )
O atributo de entrada é, digamos,
DECLARE @inpId INT = [ 0 OR POSITIVE INTEGER]
Deletar é assim
IF @inpId = 0
DELETE TOP (5000) AIA FROM InfineonFiles WHERE pTime < @timeUnitInSeconds
ELSE
DELETE TOP (5000) AIA FROM InfineonFiles WHERE pTime < @timeUnitInSeconds AND cisId = inpId
O acima precisa estar em uma única consulta. Como eu posso fazer isso?