用image類型
方法:
1、建立過程
CREATE PROCEDURE sp_textcopy (
@srvname varchar (30),
@login varchar (30),
@password varchar (30),
@dbname varchar (30),
@tbname varchar (30),
@colname varchar (30),
@filename varchar (30),
@whereclause varchar (40),
@direction char(1))
AS
DECLARE @exec_str varchar (255)
SELECT @exec_str =
'textcopy /S ' + @srvname +
' /U ' + @login +
' /P ' + @password +
' /D ' + @dbname +
' /T ' + @tbname +
' /C ' + @colname +
' /W "' + @whereclause +
'" /F ' + @filename +
' /' + @direction
EXEC master..xp_cmdshell @exec_str
2、建表和初始化數據
create table 表名 (編號 int,image列名 image)
go
insert 表名 values(1,0x)
insert 表名 values(2,0x)
go
3、讀入
sp_textcopy '你的服務器名','sa','你的密碼','庫名','表名','image列名','c:/圖片.bmp','where 編號=1','I' --注意條件是 編號=1
sp_textcopy '你的服務器名','sa','你的密碼','庫名','表名','image列名','c:/bb.doc','where 編號=2','I' --注意條件是 編號=2
go
4、讀出成文件
sp_textcopy '你的服務器名','sa','你的密碼','庫名','表名','image列名','c:/圖片.bmp','where 編號=1','O' --注意條件是 編號=1
sp_textcopy '你的服務器名','sa','你的密碼','庫名','表名','image列名','c:/bb.doc','where 編號=2','O' --注意條件是 編號=2
go
*********************************************************************
用Text類型:
READTEXT
UPDATETEXT
WRITETEXT
--------------------
Transact-SQL 參考
READTEXT
讀取 text、ntext 或 image 列中的 text、ntext 或 image 值,從指定的偏移量開始讀取指定的字節數。
語法
READTEXT { table.column text_ptr offset size } [ HOLDLOCK ]
參數
table.column
是從中讀取的表和列的名稱。表名和列名必須符合標識符的規則。必須指定表名和列名,不過可以選擇是否指定數據庫名稱和所有者名稱。
text_ptr
有效文本指針。text_ptr 必須是 binary(16)。
offset
開始讀取 text、image 或 ntext 數據之前跳過的字節數(使用 text 或 image 數據類型時)或字符數(使用 ntext 數據類型時)。使用 ntext 數據類型時,offset 是在開始讀取數據前跳過的字符數。使用 text 或 image 數據類型時,offset 是在開始讀取數據前跳過的字節數。
size
是要讀取數據的字節數(使用 text 或 image 數據類型時)或字符數(使用 ntext 數據類型時)。如果 size 是 0,則表示讀取了 4 KB 字節的數據。
HOLDLOCK
使文本值一直鎖定到事務結束。其他用戶可以讀取該值,但是不能對其進行修改。
註釋
使用 TEXTPTR 函數獲得有效的 text_ptr 值。如果返回不止一行,TEXTPTR 將返回指向指定行中的 text、ntext 或 image 列的指針,或返回指向查詢所返回的最後一行中的 text、ntext 或 image 列的指針。由於 TEXTPTR 返回 16 字節的二進制字符串,所以最好聲明一個控制文本指針的局部變量,然後在 READTEXT 中使用該變量。有關聲明局部變量的更多信息,請參見 DECLARE @local_variable。
在 SQL Server 2000 中可能存在無效的文本指針。有關 text in row 選項的更多信息,請參見 sp_tableoption。有關如何使文本指針無效的更多信息,請參見 sp_invalidate_textptr。
如果 @@TEXTSIZE 函數的值小於爲 READTEXT 指定的大小,它將替代爲 READTEXT 指定的大小。@@TEXTSIZE 函數是對由 SET TEXTSIZE 語句設置的返回數據字節數的限制。有關如何設置 TEXTSIZE 會話設置的更多信息,請參見 SET TEXTSIZE。
權限
READTEXT 權限默認授予對指定的表具有 SELECT 權限的用戶。這些權限可在傳遞 SELECT 權限時傳遞。
示例
下例讀取 pub_info 表中 pr_info 列的第 2 個至第 26 個字符。
USE pubs
GO
DECLARE @ptrval varbinary(16)
SELECT @ptrval = TEXTPTR(pr_info)
FROM pub_info pr INNER JOIN publishers p
ON pr.pub_id = p.pub_id
AND p.pub_name = 'New Moon Books'
READTEXT pub_info.pr_info @ptrval 1 25
GO
請參見
@@TEXTSIZE
UPDATETEXT
WRITETEXT
MS Sql Server存儲image、text、ntext
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.