проблема с коллекциями

arhip

Новичок
проблема с коллекциями

Всем привет, а особенно Тони :)

Возникла проблема при работе с коллекциями.
В базе определен тип

create or replace type ttableofnumbers as table of number

и находится он в схеме SCHM

Есть табличка:

create table DMS_CITY
(
CITY_ID NUMBER not null,
REG_ID NUMBER not null,
CITY_NAME VARCHAR2(100)
)


Вот кусок PHP-кода:

PHP:
<?php 
error_reporting(E_ALL); 
//ociinternaldebug(1); 
$conn = ocilogon("scot", "tiger", "DEV"); 

$city_id_coll = ocinewcollection($conn, "TTABLEOFNUMBERS", "SCOT"); 

$city_id_coll->append(1); 
$city_id_coll->append(2); 
$city_id_coll->append(3); 

$sql = " 
  select c.city_name 
  from dms_city c 
     , table( cast(:city_id_col as ttableofnumbers) ) t 
  where c.city_id = t.column_value 
"; 

$curs = ociparse($conn, $sql); 
ocibindbyname($curs, ":city_id_col", $city_id_coll, -1, OCI_B_SQLT_NTY); 
ociexecute($curs, OCI_DEFAULT); 
ocifetchstatement($curs, $arr_result); 

var_dump($arr_result); 

print phpversion(); 
?>
При этом возможны 2 варианта работы скрипта.

Warning: ocinewcollection(): OCITypeByName: OCI-22303: type "SCOT"."TTABLEOFNUMBERS" not found in /usr/local/apache/arhip/new_apache/coll.phtml on line 6

Fatal error: Call to a member function on a non-object in /usr/local/apache/arhip/new_apache/coll.phtml on line 8


и


array(1) { ["CITY_NAME"]=> array(3) { [0]=> string(4) "Киев" [1]=> string(7) "Харьков" [2]=> string(6) "Москва" } } 4.3.8


К моему несчастью, чаще возникает ошибка. С чем это связанно - понятия не имею. Есть идеи?
 

tony2001

TeaM PHPClub
>Warning: ocinewcollection(): OCITypeByName: OCI-22303: type "SCOT"."TTABLEOFNUMBERS" not found
тип коллекции должен быть глобальным для всей схемы.
 

arhip

Новичок
Так оно и есть.
Извини, сразу болдом не выделил кусок SQL, которій создает тип. Если есть возможность, интересно знать, появляется ли у тебя тоже эта проблема.
 

tony2001

TeaM PHPClub
значит, не та схема указана или что-то еще не так.
почему SCOT с одним T ?
что будет если убрать вообще схему?

я тестировал когда-то эти функции - все работало нормально.
 

arhip

Новичок
SCOT - моя схема :)

Ошибка периодически то возникает, то пропадает.
С сервером вроде никто ничего не делает.

Если есть возможность, протестируйте у себя плиз. Только не один раз, а нужно порефрешить страницу раз 20-ть...

-~{}~ 26.10.04 11:51:

Неужели никто не может помочь?
Тони, посмотри плиз, что можно сделать?

Вот покороче кусочек кода, который повторяет проблему:

PHP:
$conn = ocilogon(...);
$obj_coll = ocinewcollection( $conn, 'TTABLEOFSTRINGS' , 'GTADM');
//$obj_coll = ocinewcollection( $conn, 'TTABLEOFSTRINGS');
print "<pre>";
print "Collection size: " . $obj_coll->size() . "<br>";
Должно выводить "Collection size: 0". но иногда получаю ошибку.

Причем, ошибка не зависит от того, указываю я имя схемы или нет.

type создаю так:
create or replace type tTableofstrings is table of varchar2(4000)
 
Сверху