MS Sql Server存儲image、text、ntext

 用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  

發佈了18 篇原創文章 · 獲贊 3 · 訪問量 26萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章