|
|
|
(Perl + sqlplus) Как соединиться с базой????
|
|||
|---|---|---|---|
|
#18+
Надо написать прогу на perl, которая бы получала данные из БД(Oracle)..Соединяться надо через sqlplus.Понятия не имею как это сделать, нашла какой-то пример : $resultfile = "$tmpDir/tables.txt"; $tempfile = "$tmpDir/temp.txt"; open(TMP, ">$tempfile"); print TMP <<EOF; SET PAGESIZE 0 SET FEEDBACK OFF SET LINESIZE 30 SPOOL $resultfile SELECT table_name FROM user_tables; SPOOL OFF EXIT EOF print `sqlplus -s abc/abc123@database <$tempfile`; print "\nreturn code = ", system "sqlplus -s abc/abc123@database<$tempfile"; open (TABLES, $resultfile); print "\n\n", <TABLES>; Но когда это все запускаешь, пишет ORA-12545: Connect failed because target host or object does not exist Что это есть такое??? Если кто-нибудь делал что-то подобное, скиньте,плиззззз! Спа! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2006, 08:32:47 |
|
||
|
(Perl + sqlplus) Как соединиться с базой????
|
|||
|---|---|---|---|
|
#18+
Я, в Оракле не соображаю, но возникли вопросы: 1. Почему надо соединяться через SQL+, через DBI нельзя? 2. Можно ведь решать задачу поэтапно. Допустим этот пример не заработал, и пишет, что не может соединиться с таким хостом/базой/или чем-то еще. Напрашивается вопрос: а) через SQL+ в интерактивном режиме такой запрос проходит? б) через SQL+ с передачей ему файла запроса (в котором написано SET PAGESIZE 0 SET FEEDBACK OFF SET LINESIZE 30 SPOOL $resultfile SELECT table_name FROM user_tables; SPOOL OFF EXIT) проходит? в)если все это работает, значит искать надо ошибку в коде Perl-программы: Вместо переменных подставить фиксированные строки и посмотреть результат. и.т.д. Не слишком ламерский совет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2006, 12:08:41 |
|
||
|
(Perl + sqlplus) Как соединиться с базой????
|
|||
|---|---|---|---|
|
#18+
И потом, в программе в строке: print `sqlplus -s abc/abc123@database <$tempfile`; так же как и в строке: rint "\nreturn code = ", system "sqlplus -s abc/abc123@database<$tempfile"; все переменные будут интерпретироваться. Получается Perl-программа ищет и не находит массив @database (как она думает) и вместо него вставляет пустую строку. Если такую строку на: my $cmd='sqlplus -s abc/abc123@database <$tempfile';# в одиночных кавычках print "\n return code=", system $cmd; Результат изменится? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2006, 12:39:18 |
|
||
|
(Perl + sqlplus) Как соединиться с базой????
|
|||
|---|---|---|---|
|
#18+
Да, уж всё попробовала, а результат один и тот же : ORA-12545: Connect failed because target host or object does not exist Надо делать почему-то именно через sqlplus, а не через DBI... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2006, 11:24:36 |
|
||
|
(Perl + sqlplus) Как соединиться с базой????
|
|||
|---|---|---|---|
|
#18+
Может это http://www.interface.ru/fset.asp?Url=/oracle/operl.htm поможет? В подробности не вникал, но про sqlplus упоминается. [p align=right] Теперь свой собственный internet-ресторан может открыть любой желающий! [/p] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2006, 12:08:00 |
|
||
|
(Perl + sqlplus) Как соединиться с базой????
|
|||
|---|---|---|---|
|
#18+
У себя запустил Код: 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. 29. получил Код: plaintext 1. Теперь свой собственный internet-ресторан может открыть любой желающий! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2006, 12:19:34 |
|
||
|
(Perl + sqlplus) Как соединиться с базой????
|
|||
|---|---|---|---|
|
#18+
CookieGirlНадо делать почему-то именно через sqlplus, а не через DBI... А Вы не могли бы попросить своего работодателя обосновать свое решение, указав, например, на ресурс в инете, где имеет место сравнительный анализ обоих методов - преимущества и недостатки? Ну как, законектиться удалось? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2006, 10:58:03 |
|
||
|
(Perl + sqlplus) Как соединиться с базой????
|
|||
|---|---|---|---|
|
#18+
Хммм...по отдельности всё работает, но соединиться так и не получилось..Почему-то даже простое соединение не работает: #! /usr/bin/perl $command = 'sqlplus abc/abc123@db'; print "$command"; print "status" . system "sqlplus abc/abc123@db"; результат : ORA-12545: Connect failed because target host or object does not exist ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2006, 09:06:47 |
|
||
|
|

start [/forum/topic.php?fid=23&tid=1476403]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
200ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 248ms |
| total: | 517ms |

| 0 / 0 |
