Hi! Could we please enable some services and cookies to improve your experience and our website?

SQLize Online / PHPize Online  /  SQLtest Online

A A A
Share      Blog   Popular

SQLize.online is a free online SQL environment for quickly running, experimenting with and sharing code. You can run your SQL code on top of the most popular RDBMS including MySQL, MariaDB, SQLite, PostgreSQL, Oracle and Microsoft SQL Server.

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