I created some tables in sys user account in oracle database 11g. (I was told to, though I am against creating anything under sys account).
Now when in developer (220.127.116.11.0) we call those tables (eg. SYS.tableA), the form will not compile. It says identified sys.tableA must be declared.
What am I missing? We cannot create public synonym for these tables (not allowed by company policies)
To see tables in other users, you need privileges. The owner give those privileges to other users with the GRANT command.
But, the more important is not that but the following.
Never, never, NEVER create any object in the SYS/SYSTEM scheme.
dont create any objects on sys user.
But anyhow when you create in another user then
you need to grant select/insert/update/delete to your log in user.
Grant Privileges on Tables
You can grant users various privileges to tables. These privileges can be any combination of select, insert, update, delete, references, alter, and index. Below is an explanation of what each privilege means.
Ability to query the table with a select statement.
Ability to add new rows to the table with the insert statement.
Ability to update rows in the table with the update statement.
Ability to delete rows from the table with the delete statement.
Ability to create a constraint that refers to the table.
Ability to change the table definition with the alter table statement.
Ability to create an index on the table with the create index statement.
The syntax for granting privileges on a table is:
grant privileges on object to user;
For example, if you wanted to grant select, insert, update, and delete privileges on a table called suppliers to a user name smithj, you would execute the following statement:
grant select, insert, update, delete on suppliers to smithj;
You can also use the all keyword to indicate that you wish all permissions to be granted. For example:
grant all on suppliers to smithj;
If you wanted to grant select access on your table to all users, you could grant the privileges to the public keyword. For example:
grant select on suppliers to public;
In addition to at least granting SELECT on that table (no matter what userid owns it), in order for users to run the form, those users ALSO must be granted Select access.
It is easier to grant access to a role, and grant that role to all the users who use that form.