Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / PB и процедура MSSQL с параметром типа image / 15 сообщений из 15, страница 1 из 1
13.11.2008, 11:49
    #35651159
VanoR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PB и процедура MSSQL с параметром типа image
Никак не могу въехать, толи РВ виноват толи я чего криво делаю

Есть таблица в БД(MSSQL2005) с полем типа image. Задача - заливать туда файлы целиком. Если делаю прям из PB updateblob или selectblob то отлично все сохраняется и считывается, а если реализовываю все это через хранимую процедуру в MSSQL с параметром типа image, то все, беда, файлы (переменная blob) обрезаются, иногда до символа с кодом 0 (кнец файла), иногда вапще не понятно по какой символ, закономерности не нашел.

Вот процедура, datalength(@file_data) уже возвращает меньшее число, чем размер блоба
Код: 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.
create procedure dbo.apt_save_file @sid varchar( 255 ) = null, @file_data image = null
as
declare @id numeric
DECLARE @ptrval binary( 16 )
declare @tran_count_30000000008486405 int
select @tran_count_30000000008486405=@@trancount
if @tran_count_30000000008486405= 0  begin tran

select @id = convert(numeric, @sid)
--select @txt_err = convert(varchar,datalength(@file_data))
--raiserror 50001 @txt_err
delete from t_files_data where id = @id
--insert into t_files_data (id, file_data)  values (@id, @file_data)
insert into t_files_data (id, file_data)  values (@id, ' ')

SELECT @ptrval = TEXTPTR(file_data)
FROM t_files_data (UPDLOCK)
WHERE id = @id
 
WRITETEXT t_files_data.file_data @ptrval @file_data;

if @@error !=  0 
begin
   rollback transaction
   raiserror  50001  'ошибка при работе с таблицей t_files_data'
   return
end

while @tran_count_30000000008486405<@@trancount commit tran

Вот вызов процедуры в РВ (a_file_data - переменная типа blob)
Код: plaintext
1.
2.
3.
DECLARE save_file PROCEDURE FOR dbo.apt_save_file
         @sid = :as_sid,   
         @file_data = :a_file_data;
EXECUTE save_file;
Процедура нормально отрабатывает, никаких ошибок не возвращает, но толи сам РВ толи MSSQL обрезает данные на сколько захочется. Никто не сталкивался? В чем может быть проблема?

PB11.2 Build 8616
...
Рейтинг: 0 / 0
13.11.2008, 18:51
    #35652837
Филипп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PB и процедура MSSQL с параметром типа image
Единственный метод - updateblob / selectblob
Никакая процедура напрямую из РВ с блобами работать не будет.
...
Рейтинг: 0 / 0
18.11.2008, 08:06
    #35659389
VanoR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PB и процедура MSSQL с параметром типа image
ФилиппЕдинственный метод - updateblob / selectblob
Никакая процедура напрямую из РВ с блобами работать не будет.
проблема в том, что updateblob и selectblob прям из РВ несоответствуют политике приложения, у пользователей нет никаких прав на таблицы (select, update, delete), доступ к данным в БД только через процедуры :(
...
Рейтинг: 0 / 0
18.11.2008, 08:07
    #35659391
VanoR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PB и процедура MSSQL с параметром типа image
А вообще, это баг РВ?
...
Рейтинг: 0 / 0
18.11.2008, 09:43
    #35659517
spas2001
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PB и процедура MSSQL с параметром типа image
Нет, не баг и ты прекрасно это знаешь
-----------------------------------------------------------------------------
Главная деталь любой машины - голова ее владельца
...
Рейтинг: 0 / 0
18.11.2008, 09:44
    #35659519
spas2001
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PB и процедура MSSQL с параметром типа image
Как вариант - закачка во временную таблицу и запуск процедуры
-----------------------------------------------------------------------------
Главная деталь любой машины - голова ее владельца
...
Рейтинг: 0 / 0
18.11.2008, 11:46
    #35659908
VanoR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PB и процедура MSSQL с параметром типа image
а почему не баг?
при передаче переменной типа блоб в процедуру, она обрезается
...
Рейтинг: 0 / 0
18.11.2008, 12:41
    #35660115
spas2001
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PB и процедура MSSQL с параметром типа image
Угу, до 32К
-----------------------------------------------------------------------------
Главная деталь любой машины - голова ее владельца
...
Рейтинг: 0 / 0
18.11.2008, 14:02
    #35660490
VanoR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PB и процедура MSSQL с параметром типа image
так я не имею в виду 32К, в основном обрезается по символ с кодом 0, а иногда вапще непонятно как, но все это обрезание кончается тем, что оставшийся кусочек гораздо меньше 32К
...
Рейтинг: 0 / 0
19.11.2008, 10:46
    #35662569
spas2001
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PB и процедура MSSQL с параметром типа image
Конец файла, что же ты хочешь
-----------------------------------------------------------------------------
Главная деталь любой машины - голова ее владельца
...
Рейтинг: 0 / 0
19.11.2008, 12:25
    #35662926
VanoR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PB и процедура MSSQL с параметром типа image
spas2001Конец файла, что же ты хочешь
-----------------------------------------------------------------------------
Главная деталь любой машины - голова ее владельца
Если посмотреть например вордовский файл, то там этих концов файла (символов с кодом 0) полно, но ведь это не конец файла
...
Рейтинг: 0 / 0
19.11.2008, 13:52
    #35663242
spas2001
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PB и процедура MSSQL с параметром типа image
Ванька, не прокатит, временная таблица же доступна для всех пользователей, вот и сделай туда updateblob, а оттуда уже процедурой
-----------------------------------------------------------------------------
Главная деталь любой машины - голова ее владельца
...
Рейтинг: 0 / 0
19.11.2008, 14:04
    #35663286
VanoR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PB и процедура MSSQL с параметром типа image
Да сделал уже... работает :)
...
Рейтинг: 0 / 0
19.11.2008, 16:27
    #35663770
spas2001
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PB и процедура MSSQL с параметром типа image
МАЛАДЕЦ!!!!
А как сделал то?
-----------------------------------------------------------------------------
Главная деталь любой машины - голова ее владельца
...
Рейтинг: 0 / 0
19.11.2008, 17:07
    #35663889
VanoR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PB и процедура MSSQL с параметром типа image
через временную таблицу, updateblob
...
Рейтинг: 0 / 0
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / PB и процедура MSSQL с параметром типа image / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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