Pessoal, neste caso não seria uma dúvida e sim uma dica beleza ? Notei que no final deste vídeo (Excluindo uma função) do curso (SQL Server: T-SQL com Microsoft SQL Server 2017) é dito que sempre o CREATE FUNCTION ou até um CREATE PROCEDURE necessita estar no começo do código, porém, tem como executar sim com mais comando adicionando um comando simples no final de cada bloco, o (GO).
O (GO) não é um comando do T-SQL, porém, são reconhecidos pelos utilitários sqlcmd e osql e pelo edito de códigos SQL Server Management Studio. Estes comandos podem ser usados para facilitar a legibilidade e a execução de lotes e scripts. O GO sinaliza o término de um lote de instruções Transact-SQL para os utilitários do SQL Server. Está informação é do site da Microsoft (https://docs.microsoft.com/pt-br/sql/t-sql/language-elements/sql-server-utilities-statements-go?view=sql-server-ver15).
Quando utilizamos o (GO) no final de um lote de script é como se finalizássemos e poderíamos ir para o próximo e pensando no caso deste vídeo de (CREATE FUNCTION ou DROP FUNCTION) este comando funciona bem e você consegue rodar ambos códigos se inserir o (GO) no final do primeiro lote.
Abaixo deixarei um exemplo do código e espero que ajude quem estiver lendo!
IF OBJECT_ID ('EnderecoCompleto2', 'FN') IS NOT NULL
DROP FUNCTION EnderecoCompleto2
GO
CREATE FUNCTION EnderecoCompleto2
(
@ENDERECO VARCHAR(150)
,@CIDADE VARCHAR (50)
,@ESTADO VARCHAR(50)
,@CEP VARCHAR (20)
)
RETURNS VARCHAR (250)
AS
BEGIN
DECLARE @ENDERECO_COMPLETO VARCHAR(250)
SET @ENDERECO_COMPLETO = @ENDERECO + ' - ' + @CIDADE + ' - ' + @ESTADO + ' - ' + @CEP
RETURN @ENDERECO_COMPLETO
END
GO
SELECT CPF, [dbo].[EnderecoCompleto] ([ENDERECO 1], [CIDADE], [ESTADO], [CEP]) AS END_COMPLETO FROM [dbo].[TABELA DE CLIENTES]
GO
Valeu!