powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Ошибка SQL0102N
8 сообщений из 8, страница 1 из 1
Ошибка SQL0102N
    #37063724
OlegA67
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Переписываю свое клиент-серверное(Fоxpro) приложение в приложение WEB(Apache+PHP).
И столкнулся с проблемой записи текста файлов в базу DB2.
Если на клиент-серверном приложение запись текста файлов до 3Мб проходит нормально,
то при вызове той же самой хранимой процедуры в РНР вываливается ошибка SQL0102N.
В хелпе вычитал что строковые переменные более 32672 байт надо присваивать только из значений переменных хоста.
Объясните как это сделать. Apache на Линуксе. Заранее спасибо
...
Рейтинг: 0 / 0
Ошибка SQL0102N
    #37063989
...
Рейтинг: 0 / 0
Ошибка SQL0102N
    #37065371
OlegA67
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Примерно понятно в какую сторону надо рыть.
PHP стал осваивать недавно, и не полуачется задействовать
эти host variables. Например есть рабочий код,
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
<?php
...
$db2conn = db2_connect($database,$login,$password) ;
...
$serv = 'adm007';
$result = db2_exec($db2conn,"call main.ret_services('$serv')", array ('cursor'=>DB2_SCROLLABLE))
        or  exit (db2_stmt_errormsg());
...
?>

пытаюсь его переделать с использование host variables

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
<?php
...
$db2conn = db2_connect($database,$login,$password) ;
...
$serv = 'adm007';
$result = db2_exec($db2conn,"call main.ret_services(:serv)", array ('cursor'=>DB2_SCROLLABLE))
        or  exit (db2_stmt_errormsg());
...
?>

то вываливается ошибка SQL0313N.
Или обязательно для использования переменных надо использовать связку prepare c execute?

По тем ссылкам что привел Евгений, не совсем понял как правильно привязаваться к объектам.
В общем без помощи форумчан не разобраться :о((
...
Рейтинг: 0 / 0
Ошибка SQL0102N
    #37065984
OlegA67,

Последовательность prepare->bind param->execute обязательна в таком случае.

Если же запрос нужно выполнить много раз, с разными значениями параметров, то последовательность такая:
Один раз prepare.
N-раз : bind->execute->fetch->free_result
Один раз free_stmt.

Preparing and executing SQL statements in PHP (ibm_db2)

PS: Чем не устраивает доступ к СУБД через PDO?
...
Рейтинг: 0 / 0
Ошибка SQL0102N
    #37066327
OlegA67
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Евгений Хабаров,

Добрый день Евгений.
На тот момент когда определялись как подключаться к базе через ODBC или ibm_db2,
системному админу проще было прикрутить модуль ibm_db2 на том и остановились.
Извиняюсь что в первом сообщение не указал способ подключения к базе.
Нашел тот раздел, где описывается как использовать переменные использую ibm_db2.
Стал пробовать и не получается, вот код
Код: plaintext
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.
<?php
$database='iport';
$login='db2inst';
$password='password';
$db2conn = db2_connect($database,$login,$password) ;
 if  (!$db2conn)
{        print  db2_conn_errormsg();
         exit ();
}

$serv = 'adm007';
$sql = "select * from main.work1 where vc_logon = ?";
$stmt = db2_prepare($db2conn,$sql) ;
db2_bind_param($stmt, 1 ,"serv",DB2_PARM_IN) ;

 if  (db2_execute($stmt))
   {
     while  ($row=db2_fetch_array($stmt))
        {
         print  "{$row[0]} \n";
        }
    }
 else 
    {
     echo  'error';
     echo  db2_stmt_errormsg();
    }
?>

в результате я только получаю строчку error, но не вижу причину ошибки, так как нет сообщения от команды
db2_stmt_errormsg(). Подскажите, что делаю не так.
...
Рейтинг: 0 / 0
Ошибка SQL0102N
    #37066503
OlegA67
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Евгений Хабаров,

Евгений еще раз спасибо за участие в моей проблеме.
Допустил синтаксическую ошибку, вместо DB2_PAR A M_IN писал DB2_PARM_IN.
Разобрался как передавать параметры, удалось закинуть файл в базу.
...
Рейтинг: 0 / 0
Ошибка SQL0102N
    #37066670
OlegA67Евгений Хабаров,

На тот момент когда определялись как подключаться к базе через ODBC или ibm_db2,
системному админу проще было прикрутить модуль ibm_db2 на том и остановились.
Извиняюсь что в первом сообщение не указал способ подключения к базе.

Introduction to PHP application development for DB2
Unified ODBC - принципиально не рекомендуется к использованию (причины указаны в документе по ссылке).
ibm_db2 - это процедурный подход, на замену Unified ODBC, но код получается однозначно привязанным к DB2.
PDO_ODBC - это объектный подход, который использует системный ODBC-менеджер. Рекомендуется, т.к. в случае миграции на другую СУБД, прикладной код менять не нужно будет. Нужно будет менять строку подключения и (возможно, если SQL-диалект другой) SQL-код.
...
Рейтинг: 0 / 0
Ошибка SQL0102N
    #37066977
Oleg_A67
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Евгений Хабаров,
Еще раз спасибо Евгений. за доступное разъяснение
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Ошибка SQL0102N
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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