ADOdb Library for PHP Manual
Prev ExecuteCursor Next

ExecuteCursor($sql,$cursorName='rs',$parameters=false)

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

Sponsored by phpLens