Fórum Variável x Insert com Returning #398408
29/03/2011
0
Estou precisando dentro de uma função realizar o comando abaixo de inserção porém o resultado do mesmo defini-lo em uma variável _Sequencia:
INSERT INTO Auditoria (Nome_Tabela, Codigo_Usuario, Data) VALUES ('ESTADOS', _Codigo_Usuario, Current_Timestamp) RETURNING Sequencia;
Alguém pode me ajudar nessa?
Alexandre
Curtir tópico
+ 0Posts
30/03/2011
Jair N.
Bom Dia no caso o tipo do campo "sequencia" é "autoincremental"?
Caso se for, pode-se utilizar como retorno:
FUNCTION ... RETURNS INTEGER...
BEGIN
INSERT INTO Auditoria (Nome_Tabela, Codigo_Usuario, Data) VALUES ('ESTADOS', _Codigo_Usuario, Current_Timestamp) ;
RESULT := CURRVALl('auditora.sequencia');
END:
Gostei + 0
30/03/2011
Alexandre
Gostei + 0
31/03/2011
Jair N.
FUNCTION ... RETURNS INTEGER...
$BODY$
DECLARE
intSequencial INTEGER;
dtmData TIMESTAMP;
BEGIN
dtmData :=Current_Timestamp;
-- ('auditora_sequencia') Neste caso deve-se observal qual o nome "SEQUENCE" seq_agr_agrupa
INSERT INTO Auditoria (Nome_Tabela, Codigo_Usuario, Data) VALUES ('ESTADOS', _Codigo_Usuario, dtmData) ;
RETURN CURRVALl('auditora_sequencia');
-- (ou) Bem como retorno você pode fazer uma consulta pela chave alternativa no caso a Data-hora da Gravação:
SELECT sequencial INTO intSequencial FROM estados WHERE data = dtmData;
RETURN intSequencial;
END:
$BODY$
Gostei + 0
31/03/2011
Alexandre
FOR _Registro IN EXECUTE 'INSERT INTO Auditoria (Nome_Tabela, Codigo_Usuario, Data) VALUES (''ESTADOS'', ' || _Codigo_Usuario || ', Current_Timestamp) RETURNING Sequencia' LOOP
_Sequencia = _Registro.Sequencia;
END LOOP;
Gostei + 0
31/03/2011
Alexandre
INSERT INTO Auditoria (Nome_Tabela, Codigo_Usuario, Data) VALUES ('ESTADOS', _Codigo_Usuario, Current_Timestamp) RETURNING Sequencia INTO _Sequencia;
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)