|
Update blob-поля через сохр. процедуру.
|
|||
---|---|---|---|
#18+
Как в MSSQL 6.5 сделать update или insert поля тип text или image через сохраненную процедуру, т.е. через параметры? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2000, 09:16 |
|
Update blob-поля через сохр. процедуру.
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2000, 09:29 |
|
Update blob-поля через сохр. процедуру.
|
|||
---|---|---|---|
#18+
В 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)." ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2000, 09:54 |
|
Update blob-поля через сохр. процедуру.
|
|||
---|---|---|---|
#18+
Второе утверждение относиться к исходному тексту 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) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2000, 10:24 |
|
Update blob-поля через сохр. процедуру.
|
|||
---|---|---|---|
#18+
Действительно, работает. Вот и верь после этого Book Online. В ней в разделе "CREATE PROCEDURE Statement" про типы параметров написано: "All datatypes except image are supported." А со вторым утверждением тоже оплошность вышла, не то процитировала. Просто у меня какие-то смутные воспоминания, что не любой длины текст проходит... даже при установленном @@TEXTSIZE. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.10.2000, 12:22 |
|
Update blob-поля через сохр. процедуру.
|
|||
---|---|---|---|
#18+
Спасибо. Что делать, тормознул. Также поверил доке. А с чтением через 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 а остальное делалось в клиенте. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2000, 04:50 |
|
|
start [/forum/topic.php?fid=46&fpage=3599&tid=1827687]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
61ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 163ms |
0 / 0 |