SQLize Online / PHPize Online  /  SQLtest Online

A A A
Share      Blog   Popular
Copy Format Clear
DECLARE v_table_name VARCHAR2(100) := 'A'; -- Имя родительской таблицы v_log_table_name VARCHAR2(100); -- Имя таблицы логирования v_sql VARCHAR2(4000); -- Динамический SQL v_column_definition VARCHAR2(4000) := ''; -- Определение столбцов BEGIN -- Формируем имя таблицы логирования v_log_table_name := v_table_name || 'Logs'; -- Формируем определение столбцов для таблицы логирования v_column_definition := 'ID_лог NUMBER GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, ' || 'Время_изменения TIMESTAMP DEFAULT CURRENT_TIMESTAMP, ' || 'Пользователь VARCHAR2(100), '; -- Получаем список столбцов из таблицы A и добавляем их к определению FOR rec IN (SELECT column_name, data_type, data_length FROM user_tab_columns WHERE table_name = UPPER(v_table_name) ORDER BY column_id) LOOP v_column_definition := v_column_definition || rec.column_name || ' ' || rec.data_type || CASE WHEN rec.data_type IN ('VARCHAR2', 'CHAR') THEN '(' || rec.data_length || ')' ELSE '' END || ', '; END LOOP; -- Удаляем последнюю запятую и пробел v_column_definition := RTRIM(v_column_definition, ', '); -- Создаем динамический SQL для создания таблицы логирования v_sql := 'CREATE TABLE ' || v_log_table_name || ' (' || v_column_definition || ')'; -- Выполняем динамический SQL EXECUTE IMMEDIATE v_sql; END;

Stuck with a problem? Got Error? Ask ChatGPT!

Copy Clear