Usuário com melhor resposta
Erro ao Criar uma View sendo executada por uma SP

Pergunta
-
Pessoal, estou tentando criar uma view através de uma SP. Entretanto esta dando o erro abaixo:
Msg 156, Level 15, State 1, Procedure ELT_CALCULO_DRE_15_CRIA_VIEW_DIM_GRUPO_EMPRESA_NEW, Line 11 Incorrect syntax near the keyword 'view'. Msg 319, Level 15, State 1, Procedure ELT_CALCULO_DRE_15_CRIA_VIEW_DIM_GRUPO_EMPRESA_NEW, Line 12 Incorrect syntax near the keyword 'with'. If this statement is a common table expression, an xmlnamespaces clause or a change tracking context clause, the previous statement must be terminated with a semicolon.
Essa é a SP:
CREATE PROC ELT_CALCULO_DRE_15_CRIA_VIEW_DIM_GRUPO_EMPRESA_NEW ( @id_ano int ) as create view vw_agrupa_entidade_app1_children as with parent_child(sk_parent, sk_child, entidade, codigo) as (select sk_parent, sk_entidade, entidade, codigo from d_entidade_app1 where sk_parent is not null union all select p.sk_parent, c.sk_entidade, c.entidade, c.codigo from d_entidade_app1 as c inner join parent_child as p on c.sk_parent = p.sk_child) select * from parent_child
Se puderem me ajudar eu agradeço.
Respostas
-
Deleted
- Marcado como Resposta Cleber A. dos Santos quarta-feira, 4 de janeiro de 2017 17:14
-
Deleted
- Marcado como Resposta Cleber A. dos Santos quinta-feira, 5 de janeiro de 2017 17:56
Todas as Respostas
-
Deleted
- Marcado como Resposta Cleber A. dos Santos quarta-feira, 4 de janeiro de 2017 17:14
-
Boa tarde, Cleber!
De fato, você não pode criar uma view dentro de uma procedure. O Create View deve ser executado como um único comando.
Se for muito necessário você pode criar a view dinamicamente como:
Create Proc p_teste As Begin Declare @Cmd As VarChar(Max) Set @Cmd = ' Create View v_Teste As Select Name, Object_Id From sys.all_objects ' Exec (@Cmd) Select * From v_Teste End Go Exec p_teste
Mas cara, esse tipo de coisa não faz muito sentido. Por que você precisa criar essa view em tempo de execução dentro de uma procedure? Talvez haja um outro jeito de resolver.
att,
Mailson Santana - DBA
MCSE: Data Management and Analytics
Site: www.mailsonsantana.com.br
Linkedin: mailsonsantana
-
Cara não acredito... Sabe o que estava faltando para dar certo;
GO entre o create proc e o create view
CREATE PROC ELT_CALCULO_DRE_15_CRIA_VIEW_DIM_GRUPO_EMPRESA_NEW ( @id_ano int ) as GO /* só fiz isso e funcionou */ create view vw_agrupa_entidade_app1_children as with parent_child(sk_parent, sk_child, entidade, codigo) as (select sk_parent, sk_entidade, entidade, codigo from d_entidade_app1 where sk_parent is not null union all select p.sk_parent, c.sk_entidade, c.entidade, c.codigo from d_entidade_app1 as c inner join parent_child as p on c.sk_parent = p.sk_child) select * from parent_child
Mais obrigado pela ajuda.- Sugerido como Resposta André SeccoMVP quarta-feira, 4 de janeiro de 2017 17:20
-
-
To meio confuso agora José, desculpe mais poderia me mandar a alteração que eu preciso fazer? Estou começando agora em SQL, então ainda to apanhando com algumas coisas. Achei que tinha conseguido.
Atenciosamente; Cleber A. dos Santos Linkedin: http://www.linkedin.com/in/cleberasantos E-mail: cbr.asantos@gmail.com Skype: cbr.santos
-
Deleted
- Marcado como Resposta Cleber A. dos Santos quinta-feira, 5 de janeiro de 2017 17:56
-
Certo. Obrigado pelo apoio pessoal.
Atenciosamente;
Cleber A. dos Santos
Linkedin: http://www.linkedin.com/in/cleberasantos
E-mail: cbr.asantos@gmail.com
Skype: cbr.santos
- Editado Cleber A. dos Santos quarta-feira, 4 de janeiro de 2017 18:52 corrigindo assinatura