За последние 24 часа нас посетили 22286 программистов и 1051 робот. Сейчас ищут 618 программистов ...

ORA-00942: table or view does not exist

Тема в разделе "Oracle Database", создана пользователем ssh2010, 6 авг 2007.

  1. ssh2010

    ssh2010 Активный пользователь

    С нами с:
    6 авг 2007
    Сообщения:
    11
    Симпатии:
    0
    Ребята, помогите решить эту проблемку.

    Вот скрипт:

    PHP:
    1. <?php
    2. $db ="(DESCRIPTION =
    3.    (ADDRESS_LIST =
    4.       (ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.0.170)(PORT = 1521))
    5.    )
    6.    (CONNECT_DATA =
    7.      (SID = srd)
    8.    )
    9.  )";
    10.      $connect = OCIPLogon("user", "pas", $db) or die( "Could not connect to Oracle database!") or die (ocierror());
    11. $query = "select a.result from sr$qq a";
    12. echo $query;
    13.  $statement = OCI_Parse ($connect, $query);
    14.   echo $statement;
    15.   $w = oci_execute ($statement);
    16.   echo $w;
    17.  while ($row = oci_fetch_array ($statement))
    18.     {
    19.     echo $row[0];
    20.         }
    21. ?>
    Этот скрипт выдает вот такую ошибку:
    Warning: oci_execute() [function.oci-execute]: ORA-00942: table or view does not exist in C:\Program Files\Apache Group\Apache2\htdocs\Kusr2.php on line 15

    Warning: oci_fetch_array() [function.oci-fetch-array]: ORA-24374: не сделаны определения перед извлечением или выполнением с извлечением in C:\Program Files\Apache Group\Apache2\htdocs\Kusr2.php on line 17

    Этот же запрос из воркшита нормально выдает результат, никаких проблем, а вот пхп подводит. уже тредий день сижу, не могу никак найти где баг.
     
  2. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    а зачем тут $q ?

    а база-то выбрана?
     
  3. ssh2010

    ssh2010 Активный пользователь

    С нами с:
    6 авг 2007
    Сообщения:
    11
    Симпатии:
    0
    А где базу то нужно указывать?
    может я чето не то делаю... Третий день ковыряюсь, зациклился уже
     
  4. Anonymous

    Anonymous Guest

    ssh2010, как таблица называется то?
    если sr$qq, то или экранируй знак доллара, или кавычки одинарные.
    В Оракле не понятия базы, как таковой, там только табличные пространства, доступ к которым рулится на уровне БД.
     
  5. Anonymous

    Anonymous Guest

    а зачем так извратно коннектится то, в tnsnames.ora альяс сервера прописать нельзя один раз?
     
  6. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    да-да. это я тут ступил.
    какие нах базы? =)
     
  7. ssh2010

    ssh2010 Активный пользователь

    С нами с:
    6 авг 2007
    Сообщения:
    11
    Симпатии:
    0
    select a.result from sr_bk.sr$TA_AVR_COM_KURS a

    Вот настоящий запрос.

    В tnsnames.ora я изначально все прописывал. Это уже начал эксперементировать... :(

    select a.result from 'sr_bk.sr$TA_AVR_COM_KURS' a
    Заключил вот так в одинарные кавычки, теперь выдает ошибку
    Warning: oci_execute() [function.oci-execute]: ORA-00903: invalid table name in C:\Program Files\Apache Group\Apache2\htdocs\php\Kusr2.php on line 15

    Warning: oci_fetch_array() [function.oci-fetch-array]: Л in C:\Program Files\Apache Group\Apache2\htdocs\php\Kusr2.php on line 17
     
  8. stas_t

    stas_t Активный пользователь

    С нами с:
    24 апр 2007
    Сообщения:
    500
    Симпатии:
    0
    Адрес:
    Courbevoie, France
    каково у вас значение переменной $qq?
     
  9. Anonymous

    Anonymous Guest

     
  10. ssh2010

    ssh2010 Активный пользователь

    С нами с:
    6 авг 2007
    Сообщения:
    11
    Симпатии:
    0
    select a.result from sr_bk.sr$TA_AVR_COM_KURS a;

    Ребята, вот мне админ оракла дал такой запрос, чтоб я вытягивал нужную мне ячейку. Чесно говоря, я в сиквеле не очень силен.
    Были бы к админу вопросы, если бы результат из воркшита не выдавался, а так не знаю даже...
    может сам пхп определяет часть имени таблици "$TA_AVR_COM_KURS" как переменную?
     
  11. Anonymous

    Anonymous Guest

    Если кавычки двойные.

    Потестить не могу сейчас насчет спецсимволов в именах таблиц, попробуйте экранировать знак доллара.

    Если терпит, завтра на работе потестирую.
     
  12. stas_t

    stas_t Активный пользователь

    С нами с:
    24 апр 2007
    Сообщения:
    500
    Симпатии:
    0
    Адрес:
    Courbevoie, France
    $query = 'select a.result from sr_bk.sr$TA_AVR_COM_KURS a';
     
  13. ssh2010

    ssh2010 Активный пользователь

    С нами с:
    6 авг 2007
    Сообщения:
    11
    Симпатии:
    0
    select a.result from 'sr_bk.sr$TA_AVR_COM_KURS' a;

    Вот так экранировать?
     
  14. ssh2010

    ssh2010 Активный пользователь

    С нами с:
    6 авг 2007
    Сообщения:
    11
    Симпатии:
    0

    Йопт, заработало!! Сколько то я парился, а ошибка то совсем явная была!!

    Спасибо все огромнейшее за помощь и советы!!
     
  15. ssh2010

    ssh2010 Активный пользователь

    С нами с:
    6 авг 2007
    Сообщения:
    11
    Симпатии:
    0
    ребята, еще такой вопрос.

    есть запрос к ораклу вида:

    хххххххххххххххххххххх
    and a.code = 'KRD000000B'

    Воркшит нормально выдает ответ. а пхп, как я понял не нравятся одинарные кавычки. Пробовал я их заменить на двойные или вооще убрать, ругается... может как по другому их можно заменить?
     
  16. stas_t

    stas_t Активный пользователь

    С нами с:
    24 апр 2007
    Сообщения:
    500
    Симпатии:
    0
    Адрес:
    Courbevoie, France
    если хотите писать на пхп, то вам придётся понять разницу между одинарными и двойными кавычками, а также другими способами записи строк в пхп:
    http://www.php.net/manual/ru/language.types.string.php

    в вашем случае:
    $sql = 'select ... from tbl$blablabla where ... and a.code = \'KRD000000B\''
    или
    $sql = "select ... from tbl\$blablabla where ... and a.code = 'KRD000000B'"