Escolher um só dado para ser deletado no SQL server?

SQL Server

07/05/2019

Fala pessoa, blz?!

Alguém sabe como usar o case para escolher um só dado para ser deletado no SQL server?

Dentro de um procedimento que já usei o if else ao invés de apagar uma linha inteira de uma tabela quero que escolha uma célula apenas para ser apagada.

create procedure sp_cadastro_album

@opcao INT=1,
@idalbum int ,
@artista varchar (15)= NULL,
@TituloAlbum varchar (15) =NULL,
@classificacao int,
@condicao varchar(25)

AS

Begin

if (@opcao=1)

Begin
insert into album(artista,tituloAlbum,classificacao,condicao) values (@artista, @TituloAlbum,@classificacao,@condicao)

SELECT @@IDENTITY AS Retorno

End
else if (@opcao=2)

begin

Update album set artista=@artista, tituloAlbum=@TituloAlbum ,classificacao=@classificacao condicao=@condicao 
where idalbum=@idalbum

SELECT @idalbum AS Retorno

end

else if (@opcao=3)

begin

delete from Album where idAlbum=@idalbum
SELECT @idalbum AS Retorno

end

else
Begin

RAISERROR ('AÇAO INVALIDA BITCH',14,1)

END

end 
Celso

Celso

Curtidas 0

Respostas

Emerson Nascimento

Emerson Nascimento

07/05/2019

você quer limpar o conteúdo de um campo, é isso?
se for, você pode mandar mais um parâmetro:
create procedure sp_cadastro_album
@opcao INT=1,
@idalbum int,
@artista varchar(15) = NULL,
@TituloAlbum varchar(15) = NULL,
@classificacao int,
@condicao varchar(25),
@campo varchar(25) = ''
AS
Begin
	declare @strSQL varchar(200)

	if (@opcao=1)
	begin
		insert into album(artista,tituloAlbum,classificacao,condicao) values (@artista, @TituloAlbum,@classificacao,@condicao)
		SELECT @@IDENTITY AS Retorno
	end
	else if (@opcao=2)
	begin
		Update Album set artista=@artista, tituloAlbum=@TituloAlbum ,classificacao=@classificacao, condicao=@condicao
		where idalbum=@idalbum
		SELECT @idalbum AS Retorno
	end
	else if (@opcao=3)
	begin
		if (@campo = '')
			delete from Album where idAlbum=@idalbum
		else
			exec('update Album set '+@campo+'=null where idAlbum=@idalbum')

		SELECT @idalbum AS Retorno
	end
	else
	begin
		RAISERROR ('AÇAO INVALIDA',14,1)
	end
end

daí, quando você mandar opção 3 e campo='', a procedure apagará o registro, porém se você mandar opção 3 e indicar um campo, a procedure irá limpar o conteúdo do campo.
GOSTEI 0
POSTAR