Olá a todos.
Tenho que fazer a seguinte procedure
b. Criar uma procedure que deve popular a tabela TabelasBanco da seguinte maneira:
i. A tabela deve ser populada com as informações vindas da consulta
SELECT id, name FROM sys.sysobjects WHERE xtype = 'U’
ii. A coluna DataCarga deve ser preenchida com a data do dia da carga.
iii. A coluna FlagCarga deve ser preenchida com o valor ‘UC’ equivalente a Última Carga;
iv. Antes de inserir os dados na tabela, a procedure deve verificar se já existem dados na tabela TabelasBanco, caso existam, deve ser dado o comando UPDATE para alterar o campo FlagCarga para o valor ‘CA’ Carga Antiga. De modo que apenas a última carga efetuada possua o flag ‘UC’ e as demais possuam o valor ‘CA’.
Estou tendo problema para fazer o item iv. Da forma que eu fiz todas as colunas da tabela estão sendo alteradas para ‘CA’. Mas a forma correta é que a última linha, a coluna FlagCarga, deva ficar com o valor ‘UC’
O procedimento que eu fiz é o que está abaixo: alguém sabe como posso resolver isso?
CREATE PROCEDURE sp_popula_tabela
AS
IF EXISTS (SELECT * FROM TabelasBanco)
UPDATE TabelasBanco SET FlagCarga = 'CA'
INSERT INTO TabelasBanco (IDTabela, NomeTabela)
SELECT id, name FROM sys.sysobjects WHERE xtype = 'U'
INSERT INTO TabelasBanco (DataCarga, FlagCarga) VALUES (getDate(), 'UC')
deixa eu ver se entendi, você quer algo assim:
[code]CREATE PROCEDURE sp_popula_tabela
AS
IF EXISTS (SELECT * FROM TabelasBanco)
UPDATE TabelasBanco SET FlagCarga = ‘CA’
INSERT INTO TabelasBanco (IDTabela, NomeTabela, DataCarga, FlagCarga)
SELECT id, name, getDate(), 'UC' FROM sys.sysobjects WHERE xtype = 'U'[/code]
[quote=evefuji]deixa eu ver se entendi, você quer algo assim:
[code]CREATE PROCEDURE sp_popula_tabela
AS
IF EXISTS (SELECT * FROM TabelasBanco)
UPDATE TabelasBanco SET FlagCarga = ‘CA’
INSERT INTO TabelasBanco (IDTabela, NomeTabela, DataCarga, FlagCarga)
SELECT id, name, getDate(), 'UC' FROM sys.sysobjects WHERE xtype = 'U'[/code][/quote]
Opa evefuji, o comando é esse mesmo,
agora de acrdo com este trewcho deve ser dado o comando UPDATE para alterar o campo FlagCarga para o valor ‘CA’ Carga Antiga. De modo que apenas a última carga efetuada possua o flag ‘UC’ e as demais possuam o valor ‘CA’.
pelo que eu entendi, a última linha, a coluna FlagCarga deve ficar com o valor ‘UC’, e nas outras linhas, essa coluna deve ficar com o valor ‘CA’
Isso é possível?
Opa,
O que eu entendi foi o seguinte, a cada chamada dessa procedure, iria setar toda as linhas daquela tabela como “CA”, e adicionaria as linhas da carga atual como UC…
1ª Carga
IDTabela NomeTabela DataCarga FlagCarga
1 Tabela1 20-12-2011 UC
2 Tabela2 20-12-2011 UC
3 Tabela3 20-12-2011 UC
2ª Carga
IDTabela NomeTabela DataCarga FlagCarga
1 Tabela1 20-12-2011 CA
2 Tabela2 20-12-2011 CA
3 Tabela3 20-12-2011 CA
1 Tabela1 21-12-2011 UC
2 Tabela2 21-12-2011 UC
3 Tabela3 21-12-2011 UC
3ª Carga
IDTabela NomeTabela DataCarga FlagCarga
1 Tabela1 20-12-2011 CA
2 Tabela2 20-12-2011 CA
3 Tabela3 20-12-2011 CA
1 Tabela1 21-12-2011 CA
2 Tabela2 21-12-2011 CA
3 Tabela3 21-12-2011 CA
1 Tabela1 22-12-2011 UC
2 Tabela2 22-12-2011 UC
3 Tabela3 22-12-2011 UC
4 Tabela4 22-12-2011 UC
Acho que para isso este comando que o evefuji passou estaria correto, não?
Valeu
[quote=haroflow]Opa,
O que eu entendi foi o seguinte, a cada chamada dessa procedure, iria setar toda as linhas daquela tabela como “CA”, e adicionaria as linhas da carga atual como UC…
1ª Carga
IDTabela NomeTabela DataCarga FlagCarga
1 Tabela1 20-12-2011 UC
2 Tabela2 20-12-2011 UC
3 Tabela3 20-12-2011 UC
2ª Carga
IDTabela NomeTabela DataCarga FlagCarga
1 Tabela1 20-12-2011 CA
2 Tabela2 20-12-2011 CA
3 Tabela3 20-12-2011 CA
1 Tabela1 21-12-2011 UC
2 Tabela2 21-12-2011 UC
3 Tabela3 21-12-2011 UC
3ª Carga
IDTabela NomeTabela DataCarga FlagCarga
1 Tabela1 20-12-2011 CA
2 Tabela2 20-12-2011 CA
3 Tabela3 20-12-2011 CA
1 Tabela1 21-12-2011 CA
2 Tabela2 21-12-2011 CA
3 Tabela3 21-12-2011 CA
1 Tabela1 22-12-2011 UC
2 Tabela2 22-12-2011 UC
3 Tabela3 22-12-2011 UC
4 Tabela4 22-12-2011 UC
Acho que para isso este comando que o evefuji passou estaria correto, não?
Valeu[/quote]
Opa haroflow, é isso mesmo então. Foi questão de interpretação mesmo. Mas nesse caso só funciona se eu criar a tabela sem definir chave primária.
Obrigado haroflow e evefuji.
a meu ver, a chave primária deveria ser IDTabela, NomeTabela, DataCarga.