Php 无法使用select with case when子句创建视图
如果我执行select部分,它会工作,我会得到信息,但如果我尝试执行此select的视图,然后调用该视图,它会显示ORA-00942:表或视图不存在。如果case-when子句不起作用,我还有其他观点Php 无法使用select with case when子句创建视图,php,sql,oracle,Php,Sql,Oracle,如果我执行select部分,它会工作,我会得到信息,但如果我尝试执行此select的视图,然后调用该视图,它会显示ORA-00942:表或视图不存在。如果case-when子句不起作用,我还有其他观点 $oracletext10="create or replace view consulta1 as (SELECT ArticulosCanal99.CODIGO, ArticulosCanal99.UBICACION,
$oracletext10="create or replace view consulta1
as (SELECT ArticulosCanal99.CODIGO,
ArticulosCanal99.UBICACION,
SumaArticulosenPalets.CODIGO,
SumaArticulosenPalets.UBICACION,
case ArticulosCanal99.codigo when
SumaArticulosenPalets.codigo then 1 end as Expr1,
ArticulosCanal99.UNIS_PALET_COMPLETO AS Palet_Completo
FROM SumaArticulosenPalets
RIGHT JOIN ArticulosCanal99
ON SumaArticulosenPalets.CODIGO = ArticulosCanal99.CODIGO)";
$stid10 = oci_parse($db,$oracletext10);
oci_execute($stid10);
详细说明@RobvanWijk的评论: 从此处引用,包含视图的架构的所有者必须具有从视图所基于的所有表或视图中选择、插入、更新或删除行所需的权限。必须直接向所有者授予这些权限,而不是通过角色授予这些权限。因此,您的用户已通过角色被授予对新视图的基本表/视图的权限,因此可以成功执行SELECT语句。但是,从该SQL语句创建视图时,用户基于角色的权限不足:需要执行以下GRANT语句才能创建视图:
GRANT SELECT ON SUMAARTICULOSENPALETS TO your-user-here;
GRANT SELECT ON ARTICULOSCANAL99 TO your-user-here;
将此处的用户替换为您正在使用的用户名
祝您好运。要创建视图,您需要对基础对象具有直接选择权限。要仅发布选择部分,通过角色选择权限就足够了。底层对象实际上是我创建的视图,我可以对它们进行“选择”。请重新阅读,建议仍然有效。您需要对视图具有直接选择权限。