powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Warning: oci_execute() [function.ociexecute.html]: ORA-06550
3 сообщений из 3, страница 1 из 1
Warning: oci_execute() [function.ociexecute.html]: ORA-06550
    #37859538
Максим88
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый вечер!

Ошибка (целиком): Warning: ociexecute() [function.ociexecute.html]: ORA-06550: Строка 1, столбец 1: PLS-00103: Встретился символ "" в то время как ожидалось одно из следующих: begin case declare exit for function goto if loop mod null package pragma procedure raise return select separate type update while with <идентификатор> <идентификатор с двойными кавычками-разделителями> <переменная привязки> << form table call close current define delete fetch lock insert open rollback savepoint set sql execute commit forall merge library OPERATOR_ pipe in /usr/local/poligon/homes/g/goryacms/public_html/AB250_my/ab250_my_2/ab250_tab_vkg_kr.php on line 181

Сломал всю голову. 3 дня бьюсь. Самое интересное, что в SQL Navigator PL\SQL код работает (само собой если переменные привязки из OCIBindByName ввести вручную, т.е. сразу значение). И сами переменные также выводятся, если из выводить напрямую без PL\SQL кода. А ещё простые SQL-запросы тоже срабатывают!! Что за парадокс??? Один нюанс: данные передаю из одного файла (ab250_tab_vkg.php) в другой (ab250_tab_vkg_kr.php) методом POST c помощью AJAX (хотя пробовал сегодня и Гетом без аякса - всё равно не вышло....)

Вот код (ab250_tab_vkg_kr.php):
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
<?php
 /****************************/
 require_once("elah2.php"); // внутрення разработка, чтобы залогиниться и запоролиться
 /****************************/
  ERROR_REPORTING(0+1+2+3+4+5);
 /****************************/
    /* ЭТИ ПЕРЕМЕННЫЕ ПРИХОДЯТ ПО URL из другого файла, в котором они выведены в строку через join! */
     $mas_pp451=array();
     $mas_pp451=split(':',$mp451);
     /* --------- -------------- -------------- */
     $mas_pp451t=array();
     $mas_pp451t=split(':',$mp451t);
     /* ------------------------------------------------------ */
     $mas_pcl32=array();
     $mas_pcl32=split(':',$mcl32);
     /* --------- ------------------------------------------- */
     $mas_pcl32t=array();
     $mas_pcl32t=split(':',$mcl32t);
     /* ------------------------------------------------------ */
     $mas_pcl33=array();
     $mas_pcl33=split(':',$mcl33);
     /* --------- -------------------------------------------- */
     $mas_pcl33t=array();
     $mas_pcl33t=split(':',$mcl33t);
     /* ------------------------------------------------------ */
     $mas_pkk=array();
     $mas_pkk=split(':',$kk);
     /* ------------------------------------------------------ */
     $mas_pp704=array();
     $mas_pp704=split(':',$p704);
     /* ------------------------------------------------------ */
 

/***************************/ 
     $db='DDB'; // сервер базы данных
     $conn=Connect($db);
/****************************/

/* ------------------------------------------------------ */
     $m=array();

     for ($i=0; $i<count($mas_pp451); $i++) {
      
      $m=$mas_pp451[$i];      
      $mt=$mas_pp451t[$i];
      $cl32=$mas_pcl32[$i];
      $cl32t=$mas_pcl32t[$i];
      $cl33=$mas_pcl33[$i];
      $cl33t=$mas_pcl33t[$i];
      $kk = $mas_pkk[$i];
      $p704 = $mas_pp704[$i];
      /////////////////////////////////////////////////////
/*  КОД НИЖЕ НУЖЕН ДЛЯ ПЕРЕВОДА ИЗ ОДНОЙ КОДИРОВКИ В ДРУГУЮ */
      $r_p451='A'.$m;
      $r_p451t='A'.$mt;
      $r1_p451=@iconv("UTF-8", "KOI8-R", $r_p451);
      $r_p451=((!empty($r1_p451)) ? $r1_p451 : $r_p451);
      $r_p451=substr($r_p451,1);
      $rp451=$r_p451;

      $r1_p451t=@iconv("UTF-8", "KOI8-R", $r_p451t);
      $r_p451t=((!empty($r1_p451t))?$r1_p451t:$r_p451t);
      $r_p451t=substr($r_p451t,1);
      $rp451t=$r_p451t;
      //////////////////////////////////////////////////////

/* А ТУТ НАЧИНАЕТСЯ АБРА-КАДАБРА...................... */

$st=OCIParse($conn,"
             DECLARE
S_CE72 AB250.AE990H01.CE73%TYPE;
S_CE73 AB250.AE990H01.CE73%TYPE;
S_P451 AB250.AE990H01.P451%TYPE;
S_X703 AB250.AE990H01.X703%TYPE;
S_P704 AB250.AE990H01.P704%TYPE;
S_X368 AB250.AE990H01.X368%TYPE;
S_CL32 AB250.AE990H01.CL32%TYPE;
S_CL33 AB250.AE990H01.CL33%TYPE; 

S_CE72_NEW AB250.AE990H01.CE72%TYPE;
S_CE73_NEW AB250.AE990H01.CE73%TYPE;
S_P451_NEW AB250.AE990H01.P451%TYPE;
S_P704_NEW AB250.AE990H01.P704%TYPE;
S_X368_NEW AB250.AE990H01.X368%TYPE;
S_CL32_NEW AB250.AE990H01.CL32%TYPE;
S_CL33_NEW AB250.AE990H01.CL33%TYPE; 


BEGIN
     
  S_P451_NEW:=UPPER($rp451);
  S_CL32_NEW:=$cl32;
  S_CL33_NEW:=$cl33;
  S_X368_NEW:=trunc(sysdate);
   
  S_P704_NEW:=$p704;
 ------------------
 IF $kk=3 THEN
  SELECT CE72,CE73,P451,X703,P704,X368,CL32,CL33
   INTO S_CE72,S_CE73,S_P451,S_X703,S_P704,S_X368,S_CL32,S_CL33
    FROM AB250.AE990H01
    WHERE P451=$rp451t and CL32=$cl32t and CL33=$cl33t; 
 
INSERT INTO AB250.AB250H02
          (CE72,CE73,P451,X703,P704,X368,CL32,CL33)
  VALUES(S_CE72,S_CE73,S_P451_NEW ,'3',S_P704_NEW,S_X368_NEW,S_CL32_NEW,S_CL33_NEW);
  ------------------
  END IF;
  COMMIT; 
 END;
END; ");


      /* 
      // Этот вариант не сработал, поэтому значения подставлял напрямую через пхп переменные
      OCIBindByName ($st,":rp451",&$rp451,20);
      OCIBindByName ($st,":rp451t",&$rp451t,20);
      OCIBindByName ($st,":cl32",&$cl32,8);
      OCIBindByName ($st,":cl32t",&$cl32t,8);
      OCIBindByName ($st,":cl33",&$cl33,2);
      OCIBindByName ($st,":cl33t",&$cl33t,2);
      OCIBindByName ($st,":kk",&$kk,1);
      OCIBindByName ($st,":v_p704",&$v_p704,7);
      */
      
      OCIExecute($st);
   
  
      } // заканчивается for
    
     Disconnect($conn);
?>
...
Рейтинг: 0 / 0
Warning: oci_execute() [function.ociexecute.html]: ORA-06550
    #37861187
Максим88
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нашёл способ как избежать ошибку - надо все данные PL/SQL-запроса ввести в строку. Правда очень нечитабельно.
Есть ещё выход: еаписать запрос следующим образом:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
$st=OCIParse($conn,
"DECLARE".
"S_CE72 AB250.AE990H01.CE73%TYPE;".
"S_CE73 AB250.AE990H01.CE73%TYPE;".
"S_P451 AB250.AE990H01.P451%TYPE;".
"S_X703 AB250.AE990H01.X703%TYPE;".
"S_P704 AB250.AE990H01.P704%TYPE;".
"S_X368 AB250.AE990H01.X368%TYPE;".
"S_CL32 AB250.AE990H01.CL32%TYPE;".
"S_CL33 AB250.AE990H01.CL33%TYPE; ".



....................... И т.д. ...............................
Опять-таки неудобно и непонятно откуда взялась ошибка....

Все поля (кроме P451 и P704 - текстовые) являются числовыми
...
Рейтинг: 0 / 0
Warning: oci_execute() [function.ociexecute.html]: ORA-06550
    #37863512
Максим88
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ребят, ни у кого версий нет? Проект горит......
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Warning: oci_execute() [function.ociexecute.html]: ORA-06550
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]