Существуют и другие способы достижения вашей цели, кроме моих предложений, приведенных ниже, но я бы предостерег от разделения данных, которые действительно принадлежат одной таблице, только для реализации политики доступа к данным, которая может измениться в будущем.
Самое простое решение для ограничения столбцов таблицы, которые видит пользователь, - это просмотр этих таблиц. Используйте разные представления, которые показывают или скрывают определенные столбцы и предоставляют доступ к этим представлениям различным пользователям / ролям.
Если вы заранее не знаете, какую комбинацию столбцов может видеть пользователь, то вы можете использовать динамический sql: вы собираете SQL-статистику в хранимой процедуре на основе привилегий доступа вашего пользователя (посмотрите из какой-то другой таблицы, которую вы создаете для хранения этой информации), что означает, что вы включаете только нужные столбцы в часть SELECT вашего оператора. Посмотреть этот документ из Orace
для получения дополнительной информации.
Если вы используете Oracle 10g, вам может показаться интересной статья Oracle . Он вводит тему Виртуальной частной базы данных, или сокращенно VPD, где вы можете скрыть определенные строки или столбцы или даже отдельные значения столбца в зависимости от того, кто обращается к таблице.