powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Update blob-поля через сохр. процедуру.
7 сообщений из 7, страница 1 из 1
Update blob-поля через сохр. процедуру.
    #32000363
Виктор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как в MSSQL 6.5 сделать update или insert поля тип text или image через сохраненную процедуру, т.е. через параметры?
...
Рейтинг: 0 / 0
Update blob-поля через сохр. процедуру.
    #32000364
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
create proc MyProc @id int, @img image
as
update MyTable
set ImageField = @img
where id = @id
go

...
Рейтинг: 0 / 0
Update blob-поля через сохр. процедуру.
    #32000365
Ольга
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В 6.5 нельзя передавать в качестве параметра для хранимой процедуры image. А для текстов есть ограничение в 65025 символов на длину всего скрипта:
"The maximum amount of text in a stored procedure is 65,025 characters. This limit is imposed because the text is stored in the syscomments system tables, where each procedure can occupy 255 rows of 255 bytes each (255 * 255 = 65,025)."
...
Рейтинг: 0 / 0
Update blob-поля через сохр. процедуру.
    #32000367
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Второе утверждение относиться к исходному тексту stored procedure...

Первое утверждение:
> В 6.5 нельзя передавать в качестве параметра для хранимой процедуры image.
Привожу скрипт и результаты его выполнения на MS SQL 6.5


select @@version
go
create table MyTable( id int, ImageField image )
go
create proc MyProc @id int, @img image
as
insert MyTable (id, ImageField )
values( @id, @img )
go
exec MyProc 1, 0x0101010101010100101027432657893246578342
exec MyProc 911, 0xA10101010101010010102743265789324657834B
go
select * from MyTable
go
drop proc MyProc
drop table MyTable

RESULTS:

Microsoft SQL Server 6.50 - 6.50.416 (Intel X86)
Jan 23 1999 14:10:24
Copyright (c) 1988-1997 Microsoft Corporation


(1 row(s) affected)


(1 row(s) affected)


(1 row(s) affected)

id ImageField
----------- -----------------------------------------------
1 0x0101010101010100101027432657893246578342
911 0xA10101010101010010102743265789324657834B

(2 row(s) affected)
...
Рейтинг: 0 / 0
Update blob-поля через сохр. процедуру.
    #32000371
Ольга
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Действительно, работает. Вот и верь после этого Book Online. В ней в разделе "CREATE PROCEDURE Statement" про типы параметров написано:
"All datatypes except image are supported."

А со вторым утверждением тоже оплошность вышла, не то процитировала. Просто у меня какие-то смутные воспоминания, что не любой длины текст проходит... даже при установленном @@TEXTSIZE.
...
Рейтинг: 0 / 0
Update blob-поля через сохр. процедуру.
    #32000377
Виктор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо. Что делать, тормознул. Также поверил доке.
А с чтением через stored proc из Delphi также были проблемы. Процедура обрезала blob поле до размера 32К, несмотря на установки TEXTSIZE. Пришлось читать поле кусками, написав две процедурки, одна из которых возвращает длину поля, а другая читает из поля кусками по 32К.

CREATE PROCEDURE GET_LENGTH
@ID integer,
@LENGTH INTEGER OUTPUT
AS
select @LENGTH=DATALENGTH(REPORT) from BLOBS (NOLOCK)
where ID=@ID

create procedure GET_BLOBS
@ID integer,
@FromPosition integer,
@BytesToRead integer
as
set NOCOUNT ON
set TEXTSIZE 32768
declare @PTR varbinary(16)
select @PTR = TEXTPTR(REPORT) from BLOBS (NOLOCK)
where (ID=@ID)

readtext BLOBS.REPORT @PTR @FromPosition @BytesToRead

а остальное делалось в клиенте.
...
Рейтинг: 0 / 0
Update blob-поля через сохр. процедуру.
    #32000378
Ольга
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А это у тебя, скорее всего, в настройке или драйвера, или алиаса BDE маленький размер BLOB SIZE стоит.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Update blob-поля через сохр. процедуру.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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