Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Variável %ROWTYPE do nome da tabela


Você provavelmente não pode fazer isso (pelo menos não de forma útil).

Você poderia construir um bloco PL/SQL anônimo inteiro
v_plsql := 'DECLARE ' ||
           '  l_row ' || p_table_name || '%rowtype; ' ||
           'BEGIN ' ||
           '  SELECT * ' ||
           '    INTO l_row ' ||
           '    FROM ' || p_table_name ||
           '    WHERE id = ' || p_some_old_value || ';' ||
           ...
EXECUTE IMMEDIATE v_plsql;

Em geral, porém, muito antes de começar a recorrer ao PL/SQL dinâmico em tempo de execução, você realmente quer dar um passo atrás e avaliar se não existe uma solução mais fácil para qualquer problema que você tenha. Existem vários frameworks, por exemplo, que geram pacotes CRUD dinamicamente para cada uma de suas tabelas. Isso está usando PL/SQL dinâmico, mas está fazendo isso apenas uma vez como parte de uma compilação, em vez de fazê-lo toda vez que você deseja atualizar dados.