OCINewCursor

OCINewCursor -- devuelve un cursor nuevo (Statement-Handle) - use esto para enlazar ref-cursors!

Descripción

int OCINewCursor ( int conn)

Ejemplo 1 . Usando un REF CURSOR de un procedimiento almacenado

 
?php

 
/

 
/

 
suppose

 
your

 
stored

 
procedure

 
info.output

 
returns

 
a

 
ref

 
cursor

 
in

 
:data

 
$conn

 
=

 
OCILogon(

 
"scott"

 
,"tiger")

 
;

 
$curs

 
=

 
OCINewCursor($conn)

 
;

 
$stmt

 
=

 
OCIParse($conn

 
,"begin

 
info.output(:data)

 
;

 
end

 
;")

 
;

 
ocibindbyname($stmt

 
,"data"

 
,

 
$curs,-1,OCI_B_CURSOR)

 
;

 
ociexecute($stmt)

 
;

 
ociexecute($curs)

 
;

 
while

 
(OCIFetchInto($curs

 
,

 
$data)

 
)

 
{

 
var_dump($data)

 
;

 
}

 
OCIFreeCursor($stmt)

 
;

 
OCIFreeStatement($curs)

 
;

 
OCILogoff($conn)

 
;

 
?





Ejemplo 2 . Usando un REF CURSOR en una sentencia select

 
?php

 
print

 
"

 
HTML

 
BODY

 
"

 
;

 
$conn

 
=

 
OCILogon("scott"

 
,"tiger")

 
;

 
$count_cursor

 
=

 
"CURSOR(select

 
count(empno

 
)

 
num_emps

 
from

 
emp

 
"

 
.

 
"where

 
emp.deptno

 
=

 
dept.deptno

 
)

 
as

 
EMPCNT

 
from

 
dept"

 
;

 
$stmt

 
=

 
OCIParse($conn

 
,"select

 
deptno,dname,$count_cursor")

 
;

 
ociexecute($stmt)

 
;

 
print

 
"

 
TABLE

 
BORDER=\"1\

 
"

 
"

 
;

 
print

 
"

 
TR

 
"

 
;

 
print

 
"

 
TH

 
DEPT

 
NAME

 
/

 
TH

 
"

 
;

 
print

 
"

 
TH

 
DEPT

 
#

 
/

 
TH

 
"

 
;

 
print

 
"

 
TH

 
#

 
EMPLOYEES

 
/

 
TH

 
"

 
;

 
print

 
"

 
/

 
TR

 
"

 
;

 
while

 
(OCIFetchInto($stmt

 
,

 
$data,OCI_ASSOC)

 
)

 
{

 
print

 
"

 
TR

 
"

 
;

 
$dname

 
=

 
$data["DNAME"]

 
;

 
$deptno

 
=

 
$data["DEPTNO"]

 
;

 
print

 
"

 
TD

 
$dname

 
/

 
TD

 
"

 
;

 
print

 
"

 
TD

 
$deptno

 
/

 
TD

 
"

 
;

 
ociexecute($data

 
[

 
"EMPCNT

 
"

 
])

 
;

 
while

 
(OCIFetchInto($data

 
[

 
"EMPCNT

 
"

 
]

 
,

 
$subdata,OCI_ASSOC)

 
)

 
{

 
$num_emps

 
=

 
$subdata["NUM_EMPS"]

 
;

 
print

 
"

 
TD

 
$num_emps

 
/

 
TD

 
"

 
;

 
    }

 
print

 
"

 
/

 
TR

 
"

 
;

 
}

 
print

 
"

 
/

 
TABLE

 
"

 
;

 
print

 
"

 
/

 
BODY

 
/

 
HTML

 
"

 
;

 
OCIFreeStatement($stmt)

 
;

 
OCILogoff($conn)

 
;

 
?