Oracle 从CodeIgniter执行dbms_mview.refresh

Oracle 从CodeIgniter执行dbms_mview.refresh,oracle,packages,Oracle,Packages,我需要执行executedbms\u mview.refresh('MATERIALIZED\u VIEW\u NAME')从模型中调用此包,但当我尝试使用这样的语句执行此操作时: $refresh = $this->db->query('EXECUTE DBMS_MVIEW.REFRESH(\'CRM_LISTADO_CONTACTOS\')'); 但是我从模型中的这一行收到一个数据库错误。我也尝试了db->store\u过程,但也没有成功 你知道怎么叫包裹吗? 非常感谢 嗯,我

我需要执行
executedbms\u mview.refresh('MATERIALIZED\u VIEW\u NAME')
从模型中调用此包,但当我尝试使用这样的语句执行此操作时:

$refresh = $this->db->query('EXECUTE DBMS_MVIEW.REFRESH(\'CRM_LISTADO_CONTACTOS\')');
但是我从模型中的这一行收到一个数据库错误。我也尝试了
db->store\u过程
,但也没有成功

你知道怎么叫包裹吗?
非常感谢

嗯,我以前从未听说过CodeIgniter,但我有根据地猜测,您使用的是$this->$db->query,而不是传递查询

我的猜测是,如果它支持调用存储过程,可能有$this->$db->call\u函数或者$this->$db->call\u过程,或者其他什么


抱歉,这确实是一个Codeigniter问题,而不是Oracle问题。

看来我终于解决了这个问题。我正在发布我的解决方案,也许它可以帮助其他人

在解析传递给过程的参数时,似乎CI崩溃了,因此,我不得不返回源代码并使用基本的oci_execute方法。我的解决方案如下所示:

在模型中:

…执行插入和更新的代码…然后

    $p_name_mat_view = 'VIEW_NAME';
    $p_refresh_method = NULL;

    $conn = oci_connect('username', 'password', 'hostname');
    $query = 'BEGIN dbms_mview.refresh(:p_name_mat_view, :p_refresh_method); END;';

    $stid = oci_parse($conn, $query);

    oci_bind_by_name($stid, ":p_name_mat_view", & $p_name_mat_view);
    oci_bind_by_name($stid, ":p_refresh_method", & $p_refresh_method);
    $r = oci_execute($stid);
成功了

干杯,
Vero不显示任何错误,只显示错误。然后,如果我在Oracle开发者中输入它,它就可以工作了。是的,它是一个CI的东西。我还尝试按如下方式使用oci_execute强制它,但它仍然给出一个ORA-00900:invalid SQL语句:$conn=oci_connect(usr,pass,host)$query='EXEC dbms\u mview.refresh(\'MAT\u VIEw\u NAME\');$stid=oci_parse($conn$query);$r=oci_执行($stid,oci_默认值);