| ADOdb Library for PHP Manual | ||
|---|---|---|
| Prev | ExecuteCursor | Next |
Execute an Oracle stored procedure, and returns an Oracle REF cursor variable as a regular ADOdb recordset. Does not work with any other database except oci8. Thanks to Robert Tuttle for the design.
$db
= ADONewConnection("oci8");
$db->Connect("foo.com:1521",
"uid", "pwd",
"FOO");
$rs =
$db->ExecuteCursor("begin
:cursorvar := getdata(:param1); end;",
'cursorvar',
array('param1'=>10));
# $rs is now just like
any other ADOdb recordset object rs2html($rs);
ExecuteCursor() is a helper function that does the following internally:
$stmt = $db->Prepare("begin :cursorvar := getdata(:param1); end;", true);
$db->Parameter($stmt, $cur, 'cursorvar', false, -1, OCI_B_CURSOR);
$rs = $db->Execute($stmt,$bindarr);
ExecuteCursor only accepts 1 out parameter. So if you have 2 out parameters, use:
$vv = 'A%';
$stmt = $db->PrepareSP("BEGIN list_tabs(:crsr,:tt); END;");
$db->OutParameter($stmt, $cur, 'crsr', -1, OCI_B_CURSOR);
$db->OutParameter($stmt, $vv, 'tt', 32); # return varchar(32)
$arr = $db->GetArray($stmt);
print_r($arr);
echo " val = $vv"; ## outputs 'TEST'
for the following PL/SQL:
TYPE TabType IS REF CURSOR RETURN TAB%ROWTYPE; PROCEDURE list_tabs(tabcursor IN OUT TabType,tablenames IN OUT VARCHAR) IS BEGIN OPEN tabcursor FOR SELECT * FROM TAB WHERE tname LIKE tablenames; tablenames := 'TEST'; END list_tabs;
| Prev | Home | Next |
| CacheExecute | Up | SelectLimit |