powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / PB и процедура MSSQL с параметром типа image
15 сообщений из 15, страница 1 из 1
PB и процедура MSSQL с параметром типа image
    #35651159
VanoR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никак не могу въехать, толи РВ виноват толи я чего криво делаю

Есть таблица в БД(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
PB и процедура MSSQL с параметром типа image
    #35652837
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Единственный метод - updateblob / selectblob
Никакая процедура напрямую из РВ с блобами работать не будет.
...
Рейтинг: 0 / 0
PB и процедура MSSQL с параметром типа image
    #35659389
VanoR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ФилиппЕдинственный метод - updateblob / selectblob
Никакая процедура напрямую из РВ с блобами работать не будет.
проблема в том, что updateblob и selectblob прям из РВ несоответствуют политике приложения, у пользователей нет никаких прав на таблицы (select, update, delete), доступ к данным в БД только через процедуры :(
...
Рейтинг: 0 / 0
PB и процедура MSSQL с параметром типа image
    #35659391
VanoR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вообще, это баг РВ?
...
Рейтинг: 0 / 0
PB и процедура MSSQL с параметром типа image
    #35659517
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, не баг и ты прекрасно это знаешь
-----------------------------------------------------------------------------
Главная деталь любой машины - голова ее владельца
...
Рейтинг: 0 / 0
PB и процедура MSSQL с параметром типа image
    #35659519
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как вариант - закачка во временную таблицу и запуск процедуры
-----------------------------------------------------------------------------
Главная деталь любой машины - голова ее владельца
...
Рейтинг: 0 / 0
PB и процедура MSSQL с параметром типа image
    #35659908
VanoR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а почему не баг?
при передаче переменной типа блоб в процедуру, она обрезается
...
Рейтинг: 0 / 0
PB и процедура MSSQL с параметром типа image
    #35660115
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Угу, до 32К
-----------------------------------------------------------------------------
Главная деталь любой машины - голова ее владельца
...
Рейтинг: 0 / 0
PB и процедура MSSQL с параметром типа image
    #35660490
VanoR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так я не имею в виду 32К, в основном обрезается по символ с кодом 0, а иногда вапще непонятно как, но все это обрезание кончается тем, что оставшийся кусочек гораздо меньше 32К
...
Рейтинг: 0 / 0
PB и процедура MSSQL с параметром типа image
    #35662569
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конец файла, что же ты хочешь
-----------------------------------------------------------------------------
Главная деталь любой машины - голова ее владельца
...
Рейтинг: 0 / 0
PB и процедура MSSQL с параметром типа image
    #35662926
VanoR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
spas2001Конец файла, что же ты хочешь
-----------------------------------------------------------------------------
Главная деталь любой машины - голова ее владельца
Если посмотреть например вордовский файл, то там этих концов файла (символов с кодом 0) полно, но ведь это не конец файла
...
Рейтинг: 0 / 0
PB и процедура MSSQL с параметром типа image
    #35663242
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ванька, не прокатит, временная таблица же доступна для всех пользователей, вот и сделай туда updateblob, а оттуда уже процедурой
-----------------------------------------------------------------------------
Главная деталь любой машины - голова ее владельца
...
Рейтинг: 0 / 0
PB и процедура MSSQL с параметром типа image
    #35663286
VanoR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да сделал уже... работает :)
...
Рейтинг: 0 / 0
PB и процедура MSSQL с параметром типа image
    #35663770
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МАЛАДЕЦ!!!!
А как сделал то?
-----------------------------------------------------------------------------
Главная деталь любой машины - голова ее владельца
...
Рейтинг: 0 / 0
PB и процедура MSSQL с параметром типа image
    #35663889
VanoR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
через временную таблицу, updateblob
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / PB и процедура MSSQL с параметром типа image
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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