Войти

Показать полную графическую версию : [решено] Получить данные из таблицы БД Oracle


support23
20-06-2014, 09:44
Доброго дня!
Возникла необходимость в получении данных из таблицы БД Oracle, таблица содержит 1 столбец и множество строк (кол-во строк - значение не постоянное и может изменяться)
На текущий момент есть следующее:

$conn = ObjCreate( "ADODB.Connection" )
$DSN = "Driver={Microsoft ODBC for Oracle}; " & _
"CONNECTSTRING=(DESCRIPTION=" & _
"(ADDRESS=(PROTOCOL=TCP)" & _
"(HOST=hostname)(PORT=1521))" & _
"(CONNECT_DATA=(SERVICE_NAME=dbname))); uid=login;pwd=password;"
$conn.Open($DSN)
$rs = ObjCreate( "ADODB.RecordSet" )

$select = "select vr.NAME from dwb.USERS us join dwb.USER_ROLE ur on ur.id_user=us.id_user join dwb.V_ROLE vr on ur.id_role = vr.ID_USER where us.NAME = 'Ivanov'"
$rs.Open($select, $conn )




$conn.close
как реализовать вывод данных, полученных из таблицы?

madmasles
20-06-2014, 11:41
support23,
Вставьте в строку поиска google ADODB.Connection site:autoit-script.ru, там несколько тем об этом есть.

support23
20-06-2014, 15:33
отлично, я нашел что искал, спасибо!

добавил строки:
$aResultsArray = $rs.GetRows()
_ArrayDisplay($aResultsArray, "Results")

конечный результат:
$conn = ObjCreate( "ADODB.Connection" )
$DSN = "Driver={Microsoft ODBC for Oracle}; " & _
"CONNECTSTRING=(DESCRIPTION=" & _
"(ADDRESS=(PROTOCOL=TCP)" & _
"(HOST=hostname)(PORT=1521))" & _
"(CONNECT_DATA=(SERVICE_NAME=dbname))); uid=login;pwd=password;"
$conn.Open($DSN)
$rs = ObjCreate( "ADODB.RecordSet" )

$select = "select vr.NAME from dwb.USERS us join dwb.USER_ROLE ur on ur.id_user=us.id_user join dwb.V_ROLE vr on ur.id_role = vr.ID_USER where us.NAME = 'Ivanov'"
$rs.Open($select, $conn )


$aResultsArray = $rs.GetRows()
_ArrayDisplay($aResultsArray, "Results")

$conn.close

madmasles
20-06-2014, 16:59
support23,
А у Вас не ошибочно стоит пустая скобка ) в 9-ой строке кода?

support23
20-06-2014, 19:13
А у Вас не ошибочно стоит пустая скобка ) в 9-ой строке кода? »
исправил, тема закрыта.

support23
25-06-2014, 10:10
если результат селекта - отсутствие значений, то выводит ошибку:

==> The requested action with this object has failed.:
$aResultsArray = $rs.GetRows()
$aResultsArray = $rs.GetRows()^ ERROR

как предотвратить завершение работы скрипта в таком случае? нужно чтобы даже в случае отсутствия значений в результате выполнения селекта, скрипт продолжил работу

support23
25-06-2014, 10:38
сам спросил, сам нашел ответ)
нужно добавить:


If Not $rs.EOF Then
$aResultsArray = $rs.GetRows()

....

endif

Iska
25-06-2014, 11:58
сам спросил, сам нашел ответ) »
Проверять надо либо и «.EOF», и «.BOF» совместно, либо «.RecordCount» (если оно поддерживается данных поставщиком данных).




© OSzone.net 2001-2012