程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 獲得XML格式的SQLServer圖表結構

獲得XML格式的SQLServer圖表結構

編輯:關於SqlServer
程序員經常問我在SQL Server 2000中是否有內置的存儲過程, 將圖表結構以XML格式返回。
  如果前端或中間層的代碼將數據轉給XML格式的存儲過程。類似下面的圖表結構將會比較有用:
  
     
     
     
     
     
     
     
     
     
     
     
     
     
     
  

  
  一旦程序員擁有圖表的XML框架, 他們就可定義傳到存儲過程的XML字符串的屬性和元素的同樣名稱。這樣通過OPENXML函數來編寫存儲過程就很簡單了---你不需要再要了解前端XML的屬性和元素如何被映射到特定圖表的列名了。
  
  不幸的是, 沒有內置的存儲過程可以返還圖表的XML框架。但開發一個不難。特定圖表中的列名可以通過查尋syscolumns系統圖表,information_schema.columns的view,或執行sp_columns系統存儲過程獲得。這篇文章中我用的是information_schema.columns, 因為微軟推薦information_schema vIEw而不是系統圖表。注意存儲過程只接受兩個參數:圖表名和擁有者名稱, 這是必要的。 因為在一個數據庫中多個用戶可以擁有同樣名稱的圖表。如果你不指定數據庫的擁有者, 存儲過程將會假設你需要建立一個數據庫本身擁有的圖表。
  
  CREATE PROCEDURE dbo.get_table_XML_structure (
   @table_name VARCHAR(255),
   @owner_name VARCHAR(30) = 'dbo'
  )
  AS
  SET NOCOUNT ON
  /* table variable to hold values */
  DECLARE @temp TABLE (
   string_value VARCHAR(4000)
   )
  
  /* check if the table exists */
  
  IF NOT EXISTS (
   SELECT a.name
   FROM sysobjects a INNER JOIN sysusers b
   ON a.uid = b.uid
   AND a.type = 'u'
   AND a.name = @table_name
   AND b.name = @owner_name)
  
  BEGIN
   RAISERROR('incorrect table name specifIEd, try again', 16,
  1)
   RETURN
  END
  
  INSERT @temp
  SELECT '<' + @table_name + '>'
  
  /* append a few blank spaces to make the output readable */
  INSERT @temp
  SELECT '   <' + column_name + '>' + ' <' + column_name
  + '/>'
  FROM information_schema.columns
  WHERE
   table_name = @table_name
  AND
   table_schema = @owner_name
  ORDER BY ordinal_position
  
  INSERT @temp
  SELECT '
  
  一旦存儲過程生成,歡迎光臨學網,收藏本篇文章 [1] [2]

$False$

你可以按以下方式執行:
  EXEC get_table_XML_structure 'orders', 'dbo'

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved