Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.02.10;
Скачать: CL | DM;

Вниз

MSSQL: READTEXT в локальную переменную   Найти похожие ветки 

 
Ihor Osov'yak ©   (2003-01-22 16:29) [0]

сабж, собственно.

Сейчас делаю это через временную табличку, примерно так:

INSERT INTO #chars(chars)
EXEC sp_executesql N"READTEXT ##text.mText @textptr @countRead 1",
N"@textptr varbinary(16), @countRead int",
@textptr,
@countRead


select @smallStr = chars from #chars


Есть ли более "цивилизированные" методы решения?

Зы - я собственно вбизи от mssql только третий день, так что не обессудьте ...


 
asmith   (2003-01-22 17:29) [1]

USE pubs
DECLARE @textpointer varbinary(16)
SELECT @textpointer = TEXTPTR(pr_info) FROM pub_info
READTEXT pub_info.pr_info @textpointer 1 25


 
asmith   (2003-01-22 17:36) [2]

Сорри, это не то! ИМНО в локальную переменную нельзя.


 
Ihor Osov'yak ©   (2003-01-22 17:50) [3]

2 asmith (22.01.03 17:36)

Ну блин, достал этот MSSQL. В IB если чего и нельзя, но очень хочется, то или поискал чужую UDF, или написал свою ... На том же делфи...

А задача в общем-то простая, елементарный парсинг... В хранимую процедуру передается параметр типа text (плоский ansi текст, может быть большим, до нескольких мегабайт), нужно разбить на строчки, и рассовать по разным табличкам в зависимости от вида строчек...
А уже день парюсь, ничего более умного чем мазохизм с двумя временными табличками + READTEXT по одному символу на ум не приходит

ЗЫ - Сорри за эмоции, накипело...
Зы2 - делать прослойку типа сервера бизнес-логики не предлагать, заказчик парсинг хочет на сервере...




 
asmith   (2003-01-22 18:44) [4]

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


 
Ihor Osov'yak ©   (2003-01-22 19:21) [5]


2 asmith (22.01.03 18:44)

> А почему чтение по одному символу? -
Тут я пожалуй не прав, можно читать в строку-буффер, наверно так и сделаю.

А строчки оканчиваются тем, чем положено для plain ansi text - 0x0D,0x0A..



 
asmith   (2003-01-22 19:59) [6]

Рискну предложить такой вариант:
1. передавать в процедуру полное имя файла со строками, лежащего где-то на сетевой шаре
2. в процедуре через ХП sp_OACreate создать объект типа FileSystemObject, читать ним файл построчно
3. каждую строку обрабатівать, как нужно.
Можно также попробовать функцией CHARINDEX (не уверен, что она умеет работать с text) искать 0x0D,0x0A, выделять строки и совать в локальную в процедуре переменную типа table.


 
Ihor Osov'yak ©   (2003-01-22 20:55) [7]

2 asmith (22.01.03 19:59)

> 1. передавать в процедуру полное имя файла со строками, лежащего где-то на сетевой шаре

Такое не идет, хотя бы что тот text, что идет к XP получается на клиенте через сокет и не хотелось бы его ложить на шару. Ибо шары для конкретной инстанции клиента может и не быть в принцыпе.

Но вот
> в процедуре через ХП sp_OACreate
немного заинтересовало. Если я правильно понял, я могу на сервере в XП создать инстанцию OLE object, в т.ч. написаного мною, и подчунуть ему тот же text.. Пусть эта инстанция OLE object и парсит этот гребанный текст... Я прав? И если я прав, то где можно почитать про то, какие интерфейсы я должен предоставлять своим OLE object, чтобы скормить его серверу, и самое главное - как передать этот text (справедливости отмечу, что инфы о написании UDF для IB - тьма... С кучей наработок с исходными текстами - и делфийскими, и сишными)...


 
Alex Konshin ©   (2003-01-24 08:03) [8]

Ты можешь сам написать XP на Delphi.
Смотри пример SQLAlert на моем сайте
http://home.earthlink.net/~akonshin/index.htm



Страницы: 1 вся ветка

Текущий архив: 2003.02.10;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.038 c
1-28872
Weare
2003-01-30 11:16
2003.02.10
Что за фишка, просто глюк какой-то.


7-29118
zuber
2002-12-03 22:40
2003.02.10
Помогите! Как звонить модемом


14-29100
Serjio Moro
2003-01-26 02:19
2003.02.10
Совместимость железяк...


6-28960
Scorpion [BC]
2002-12-18 19:49
2003.02.10
Как получить список компьютеров в рабочей группе?


14-29048
hatchy
2003-01-24 15:24
2003.02.10
Один из анекдотов..