Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как получить в переменную вывод системной процедуры? (ASE)
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток всем! Созрел интересный вопрос (ASE 12.5.0.3 && ASE 12.5.1) Задача такая: каким-то образом получить данные, которые выводит хранимая процедура xp_cmdshell. Например, Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. Хотелось бы этот результат иметь в виде строковой переменной, процедура же возвращает лишь код возврата. Где начинать копать (и стоит ли?) :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2006, 11:15 |
|
||
|
Как получить в переменную вывод системной процедуры? (ASE)
|
|||
|---|---|---|---|
|
#18+
Направить поток вывода команды вызываемой в xp_cmdshell в файл. Потом прочитать его - xp_read_file ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2006, 11:33 |
|
||
|
Как получить в переменную вывод системной процедуры? (ASE)
|
|||
|---|---|---|---|
|
#18+
Можно сохранить набор строк, получаемый при xp_cmdshell 'dir c:\' например в во временную таблицу, а потом уже выбирайте, какая конкретно вам строка нужна. Для того что бы сохранить результат полученный xp_cmdshell 'dir c:' во временную таблицу используете proxy таблицу построенную на основе RPC типа так insert #temp_xp_res select * from "proxy таблицы на основе RPC" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2006, 12:06 |
|
||
|
Как получить в переменную вывод системной процедуры? (ASE)
|
|||
|---|---|---|---|
|
#18+
А зачем прокси? просто нельзя? create table #ttt (c varchar(255)) insert into #ttt exec xp_cmdshell 'dir c:\' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2006, 12:16 |
|
||
|
Как получить в переменную вывод системной процедуры? (ASE)
|
|||
|---|---|---|---|
|
#18+
Трава у домаА зачем прокси? просто нельзя? create table #ttt (c varchar(255)) insert into #ttt exec xp_cmdshell 'dir c:\' в ASE 12.5.1 этот формат не поддерживается ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2006, 12:20 |
|
||
|
Как получить в переменную вывод системной процедуры? (ASE)
|
|||
|---|---|---|---|
|
#18+
Трава у дома create table #ttt (c varchar(255)) insert into #ttt exec xp_cmdshell 'dir c:\' А такое сработает? У xp_cmdshell на выходе разве набор данных? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2006, 12:22 |
|
||
|
Как получить в переменную вывод системной процедуры? (ASE)
|
|||
|---|---|---|---|
|
#18+
Вот так вроде все просто. EXEC xp_cmdshell 'dir c:\ >111.txt' SELECT @result=xp_read_file( '111.txt') Можно и в таблицу, если надо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2006, 12:27 |
|
||
|
Как получить в переменную вывод системной процедуры? (ASE)
|
|||
|---|---|---|---|
|
#18+
antandВот так вроде все просто. EXEC xp_cmdshell 'dir c:\ >111.txt' SELECT @result=xp_read_file( '111.txt') Такой вариант уже в голову приходил. Помеха - отсутствие в ASE 12.5 функции xp_read_file, как в мануале, так и собственно на сервере :-( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2006, 13:01 |
|
||
|
Как получить в переменную вывод системной процедуры? (ASE)
|
|||
|---|---|---|---|
|
#18+
Xintar Такой вариант уже в голову приходил. Помеха - отсутствие в ASE 12.5 функции xp_read_file, как в мануале, так и собственно на сервере :-( Т.к. xp_read_file - это из ф-ция из ASA, в ASE такой точно нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2006, 13:15 |
|
||
|
Как получить в переменную вывод системной процедуры? (ASE)
|
|||
|---|---|---|---|
|
#18+
moris Т.к. xp_read_file - это из ф-ция из ASA, в ASE такой точно нет Пардон, не помотрел. Что-то немного запущено в этом вопросе у ASE:) Тогда отстается видимо только 3 варианта 1) через прокси таблицы 2) через обычную таблицу. После вызова первого xp_cmdshell с перенаправлением вывода в файл, вызвать xp_cmdshell еще раз для запуска скрипта sql, который загрузит файл в определенную таблицу. Потом считать из этой таблицы 3) написать свою dll и сделать xp_read_file в ASE. Что кстати должно быть не сложно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2006, 14:24 |
|
||
|
Как получить в переменную вывод системной процедуры? (ASE)
|
|||
|---|---|---|---|
|
#18+
antand Трава у дома create table #ttt (c varchar(255)) insert into #ttt exec xp_cmdshell 'dir c:\' А такое сработает? У xp_cmdshell на выходе разве набор данных? к сожалению нет под рукой XP Server-а чтобы попробовать. Но в MS SQL Server такое точно работает. По аналогии с ним подумал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2006, 14:41 |
|
||
|
|

start [/forum/topic.php?fid=55&msg=34104269&tid=2012449]: |
0ms |
get settings: |
10ms |
get forum list: |
22ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
58ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
69ms |
get tp. blocked users: |
2ms |
| others: | 256ms |
| total: | 442ms |

| 0 / 0 |
