Usuário com melhor resposta
Procedure

Pergunta
-
Boa tarde
Preciso criar uma procedure que faça a criação de uma tabela com o nome que eu quiser.
Exe; Executar a procedure e nela criar uma tabela com o nome JUCJAN2012
toda vez que eu executar essa procdure eu poder criar nomes diferentes de tabela e depois nos comandos Select, poder usar esse mesmo nome criado
Obrigado
Respostas
-
Gildo,
Entendo a sua necessidade, mas queremos que você entenda que criar algo nessa estrutura pode ser perigosíssimo para o seu ambiente, tornando a administração, como o Roberson falou, caótico. Acho que existem formas para conseguir o que você almeja e que não vá impactar no teu ambiente negativamente.
Posso dar uma sugestão? Crie uma tabela na estrutura que precisa e, nela, insira 1 coluna adicional, com o período em questão (e crie os índices corretos)
Com isso, você consegue criar uma função que retorne uma tabela (passando o período por parâmetro) e então montar uma consulta que retorne o que você precisa, de forma dinâmica.
Essa exigência de criar uma tabela por período é por causa da regra de negócio da empresa, por alguma aplicação? Pergunto pois, se for uma solicitação interna, existem argumentos que podem te ajudar a aplicar uma solução mais adequada e que não prejudique o teu ambiente.
Espero ter te ajudado.
[]'s!
- Marcado como Resposta gildo_santos segunda-feira, 6 de agosto de 2012 10:46
Todas as Respostas
-
Boa Noite,
Usar uma SP que crie tabelas não costuma ser uma boa implementação.
Há algo que esteja motivando esse tipo de arquitetura ?[ ]s,
Gustavo Maia Aguiar
Blog: http://gustavomaiaaguiar.wordpress.com
Vídeos:http://www.youtube.com/user/gmasqlClassifique as respostas. O seu feedback é imprescindível
-
Sim
Estou criando um procedimento para automatizar o processo de comparação de duas tabelas, mais todo mês são informação nova e preciso cirar tabelas diferentes.
EX: mes de janeiro - CONTJAN2012
mes de janeiro SISTJAN2012
mes de FEVEREIRO CONTFEV2012
mes de FEVEREIRO SISTFEV2012
E ASSIM POR DIANTE
-
Gildo..
Concordo com o Gustavo, e acrescento à resposta dele.
A criação de tabelas mensais e por "departamento" pode criar um cenário, de certa forma caótico, nada interessante em um banco de dados.
Talvez a criação de uma tabela por "departamento" com um campo identificando a data da informação seja uma melhor prática.
Por falar em "melhor prática" o Gustavo poderia guiar-nos melhor.
Abraço !
Não esqueça de marcar o post como útil caso tenha te ajudado.
-
-
gildo_santos,
Se você só precisa dessa tabela durante a execução de sua procedure, por que não usar uma variável table?
Assim você pode preenche-la e ela não existirá no banco, somente no contexto de sua procedure.
Abs!
Alexsandre Rodrigues de Almeida - MCTS .NET Framework - Web Applications
E-mail: alexsandrer@gmail.com
Twitter: @AlexRAlmeida -
-
Gildo,
Entendo a sua necessidade, mas queremos que você entenda que criar algo nessa estrutura pode ser perigosíssimo para o seu ambiente, tornando a administração, como o Roberson falou, caótico. Acho que existem formas para conseguir o que você almeja e que não vá impactar no teu ambiente negativamente.
Posso dar uma sugestão? Crie uma tabela na estrutura que precisa e, nela, insira 1 coluna adicional, com o período em questão (e crie os índices corretos)
Com isso, você consegue criar uma função que retorne uma tabela (passando o período por parâmetro) e então montar uma consulta que retorne o que você precisa, de forma dinâmica.
Essa exigência de criar uma tabela por período é por causa da regra de negócio da empresa, por alguma aplicação? Pergunto pois, se for uma solicitação interna, existem argumentos que podem te ajudar a aplicar uma solução mais adequada e que não prejudique o teu ambiente.
Espero ter te ajudado.
[]'s!
- Marcado como Resposta gildo_santos segunda-feira, 6 de agosto de 2012 10:46
-
-
Boa tarde
Preciso criar uma procedure que faça a criação de uma tabela com o nome que eu quiser.
Exe; Executar a procedure e nela criar uma tabela com o nome JUCJAN2012
toda vez que eu executar essa procdure eu poder criar nomes diferentes de tabela e depois nos comandos Select, poder usar esse mesmo nome criado
Obrigado
Olá Uma forma de ser fazer isso poderia ser atravez da SQL abaixo:
IF (SELECT COUNT(*) FROM BANCO.sys.tables WHERE name = 'NOME_TABELA') = 0
BEGIN
CREATE TABLE NOME_TABELA(
campo1 INT,
campo2 VARCHAR(16),
campo3 DATETIME,
campo4 INT,
campo5 VARCHAR(10),
campo6 NUMERIC(12,2),
ENDOnde o nome da tabela você passa como parâmetro na procedure.
- Sugerido como Resposta João Flávio85 terça-feira, 7 de agosto de 2012 14:12