GRANT SELECT ON view TO user using script on SQL developer, than SELECT * FROM that view in SQL Plus
GRANT SELECT ON view TO user using script on SQL developer, than SELECT * FROM that view in SQL Plus
我在 SQL 开发者上的脚本:
**CREATE USER C##DG IDENTIFIED BY abc123;**
**CREATE VIEW DG1_VIEW**
AS SELECT m_pms.MaPMS, m_pms.MaDG, m_pms.SoLuong, m_s.MaSach, m_s.TenSach, m_ctpm.SL
FROM PhieuMuonSach m_pms, ChiTietPhieuMuon m_ctpm, Sach m_s
WHERE m_pms.MaDG = 1 AND m_pms.MaPMS = m_ctpm.Ma_PMS AND m_ctpm.Ma_Sach = m_s.MaSach**;**
**GRANT CREATE SESSION TO C##DG;
GRANT SELECT ON DG1_VIEW TO C##DG;**
在 Sql 另外,我以 C##DG 身份登录,键入 '''SQL> SELECT * FROM DG1_VIEW;'''
并收到 'ORA-00942: table or view does not exists'。但是这个视图已经有数据了。
我的问题是什么以及如何解决?我很想听听你们的意见。
您需要指定创建此视图的模式
select * from system.dg1_view;
或者您可以再次以系统身份登录并为该视图创建一个 public 同义词,以便在不指定模式的情况下使用它
我在 SQL 开发者上的脚本:
**CREATE USER C##DG IDENTIFIED BY abc123;**
**CREATE VIEW DG1_VIEW**
AS SELECT m_pms.MaPMS, m_pms.MaDG, m_pms.SoLuong, m_s.MaSach, m_s.TenSach, m_ctpm.SL
FROM PhieuMuonSach m_pms, ChiTietPhieuMuon m_ctpm, Sach m_s
WHERE m_pms.MaDG = 1 AND m_pms.MaPMS = m_ctpm.Ma_PMS AND m_ctpm.Ma_Sach = m_s.MaSach**;**
**GRANT CREATE SESSION TO C##DG;
GRANT SELECT ON DG1_VIEW TO C##DG;**
在 Sql 另外,我以 C##DG 身份登录,键入 '''SQL> SELECT * FROM DG1_VIEW;''' 并收到 'ORA-00942: table or view does not exists'。但是这个视图已经有数据了。
我的问题是什么以及如何解决?我很想听听你们的意见。
您需要指定创建此视图的模式
select * from system.dg1_view;
或者您可以再次以系统身份登录并为该视图创建一个 public 同义词,以便在不指定模式的情况下使用它