Я преобразовал кучу запросов DML (INSERT / UPDATE / DELETE) из Oracle в PostgreSQL, и теперь мне нужно проверить, производят ли они одинаковый набор строк, т. Е. Удаление удаляет те же строки, предполагая, что оракул иБазы данных postgresql изначально содержат одни и те же данные, обновления обновляют те же строки и т. д. На стороне PostgreSQL я могу использовать возвращающее предложение с операторами DML, т.е.«возврат *» в любой оператор DML, не зная структуры или даже имени таблицы, в которой он выполняется, и просто получает все строки, как будто это оператор выбора.
Однако наСторона Oracle.Согласно документации, Oracle 8i (с которой я работаю) поддерживает предложение RETURNING, но оно должно сохранять результат в переменных, и, похоже, не существует очевидного способа получить все столбцы результата вместо ручного указания имени столбца.
Следовательно, вопрос заключается в том, существует ли оператор оракула (или последовательность операторов) для эмуляции PostgreSQL, «возвращающегося» * без жесткого кодирования таблицы или имен столбцов.Другими словами, есть ли способ написать функцию Oracle следующим образом:
fn('INSERT INTO test(id, name) VALUES(42, ''foo'')')
Он должен возвращать набор строк, вставленных (или измененных в общем случае) с помощью оператора SQL.
Обновление: я действительно нашел очень похожий вопрос (для преобразования с сервера SQL, а не PostgreSQL, в Oracle).Тем не менее, я хотел бы услышать более простой ответ на этот вопрос, если это возможно.