OCIStmtExecute: ORA-24324: service handle not initialized

si

Administrator
OCIStmtExecute: ORA-24324: service handle not initialized

один и тото же скрипт при многократном выполнениее переодически дает такое сообщение.

PHP:
$db = 'DB';
$db_conn = oci_pconnect( "user", "password" ,$db);
	
	if ( !$db_conn )
		die("Can not connect!");

	
	$cmdstr = <<<EOF
DECLARE
	   tmp users%rowtype;
BEGIN
	 tmp:=auth.getUser( id => :user_id);
	 
	 :retval:=tmp.name;
END;
EOF;


//oci_internal_debug(1);
	
$parsed = oci_parse($db_conn, $cmdstr);
$user_id=1;

oci_bind_by_name($parsed,":user_id",$user_id);
oci_bind_by_name($parsed,":retval",$user,100);

if ( !ociexecute($parsed) )
	echo "Error";
else{
	var_dump($user);	
}
?>
php-5.0.0-RC3, linux, Ora 9iR2

-~{}~ 04.06.04 23:17:

попутный вопрос

как получить в РНР всю record целиком, т.е вделать типа такого

:retval:=tmp;

я что-то не смог найти как это сделать.
 

tony2001

TeaM PHPClub
>как получить в РНР всю record целиком, т.е вделать типа такого
>:retval:=tmp;
>я что-то не смог найти как это сделать.
если record == объект, то никак.
пока.

а в каком месте он ошибку выдает?
если юзать connect вместо pconnect ?
 

tony2001

TeaM PHPClub
>recore это переменная типа table%rowtype;
table%rowtype означает "того же типа, что и поле rowtype в таблице table" =)
просто ссылка на тип.
 

si

Administrator
table%rowtype означает "того же типа, что и поле rowtype в таблице table" =)
неправильно. это запись (record) с такими же полями, как запись в таблице. как раз вернуть 1 поле из записи (смотри первый пример) проблем и нет.
 

tony2001

TeaM PHPClub
>неправильно. это запись (record) с такими же полями, как запись в таблице.
а, ну да.
тип в данном случае == record.

кстати, я слабо себе представляю как такое можно вернуть за один раз.
по крайней мере, я подобного в мане по OCI не помню.
это не объект и не коллекция (т.к. нет соотв-щего named type), это что-то третье.
 
Сверху