希望您能对我有所帮助,我需要获取Oracle 11g中SQL查询的数据,它的其中一个字段是游标类型,这是查询:
SELECT m.nombre, m.icono, (CURSOR(SELECT p.nombre nombre_permiso, p.url
FROM permiso p
WHERE p.fk_menu = m.pk_menu
AND p.estado = 'A'
ORDER BY p.orden)) permisos FROM menu m WHERE m.estado = 'A' ORDER BY orden;
当我用PHP执行它时,字段名permiso会显示为ResourceId类型,但是它应该给我它包含的字段,我想这是字段的类型,我使用的PHP代码如下:
$sql = "DECLARE
my_cursor SYS_REFCURSOR;
BEGIN
OPEN my_cursor FOR SELECT m.nombre, m.icono, (CURSOR(SELECT p.nombre nombre_permiso, p.url
FROM permiso p
WHERE p.fk_menu = m.pk_menu
AND p.estado = 'A'
ORDER BY p.orden)) permisos
FROM menu m
WHERE m.estado = 'A'
ORDER BY orden;
:cursor := my_cursor;
END; ";
$conn = $this->db->conn_id;
$curs = oci_new_cursor($conn);
$stid = oci_parse($conn, $sql);
oci_bind_by_name($stid, ":cursor", $curs, -1, OCI_B_CURSOR);
oci_execute($stid);
oci_execute($curs);
while (($row = oci_fetch_array($curs, OCI_ASSOC + OCI_RETURN_NULLS)) != false)
{
var_dump($row);
}
oci_free_statement($stid);
oci_free_statement($curs);
var_dump显示以下内容:
array(3) { ["NOMBRE"]=> string(16) "Parametrización" ["ICONO"]=> string(11) "fa fa-gears" ["PERMISOS"]=> resource(46) of type (oci8 statement) } array(3) { ["NOMBRE"]=> string(24) "Gestión de información" ["ICONO"]=> string(10) "fa-sitemap" ["PERMISOS"]=> resource(47) of type (oci8 statement) }
非常感谢您!