用自訂函數實現功能-------根據指定表名得到表的結構

原创 2003年02月25日 17:39:00

               函數功能:根據表名得到表的列名和類型

 

當我們在編寫sql程序時,多少都會用到一些系統內建的函數,如right(),datalength()等,但是,當我們在工程開發時,如果希望能實現一些符合特殊的要求的處理的話,就需要自已編寫函數,如下面的例子是一個得到表的結構的函數

函數的分類:

1.純量函數:此類函數隻傳導回單一的數據值

2.傳回數據集的函數:傳回一個Table型別的數據集,分為以下兩類:

     2.1 行內數據集函數:函數的內容是一個Select 語句

     2.2 多敘述函數:函數的內容是由多個Select 語句組成

本例是用一個多敘述函數,它的格式為:

create function function_name

([@parameter_name]:傳入參數)

returns @return_variable table(返回表的有關信息)

as

begin

   function_body

  return

end

 

實例代碼:

create function tablestructure
(@objname nvarchar(111))----此為要查詢的表的名稱
----------------------------------------------

--fieldname為表的列的名稱,type是列的類型,length為列的長度,null表示是否允許為空

returns @table  table(  fieldname  varchar(50),
                                   type   varchar(16),
                                   length int,
                 nullable varchar(3))
----------------------------------------------                                
begin
     declare @objid int

---1.先從表sysobjects中得到與傳入的表名(name)相匹配的對象識別碼(id)

--sysobjects是包含在數據庫中建立的每一個對象 (條件約束、預設值、記錄檔、規則、存儲過程等等) 的一有數據列
     select @objid=id from sysobjects where id=object_id(@objname)

--syscolumns是包含每個資料表及視圖中的每個資料行的一數據列

---2.再從表syscolumns中取得與目標表識別碼(id)相符、且不是程序項目的的

     (列名、類型、長度、該列是否允許為空)的記錄
     insert @table
     select
    'fieldname'  =name,
    'type'                            =type_name(xusertype),
    'length'  =convert(int,length),
    'nullable'  =case when isnullable=0 then 'no' else 'yes' end
    from syscolumns where id=@objid and number=0 order by colid
   return
end

 

                         liaodaibo

基本数据结构(C#实现):顺序表

线性表的顺序存储结构,指的是用一段地址连续的存储单元一次存储线性表的数据元素。顺序表,一般采用一维数组来实现。代码实现: 顺序表类class SequenceList { p...
  • lzuwds
  • lzuwds
  • 2015年04月10日 10:18
  • 312

关于数据结构和面向对象

关于数据结构和面向对象,对编程入门者来说,可能是高山流水般神秘莫测的,但是,实际上,数据结构和面向对象只是一种简单的思想。...
  • csdn372301467
  • csdn372301467
  • 2016年10月31日 08:55
  • 1092

线性表数据结构解读(四)队列结构Queue

在上一篇文章中,我们详细介绍了栈结构,并结合Stack源码进行了分析,相关文章大家可以点击这里回看我的博客:线性表数据结构解读(三)栈结构Stack队列的定义    队列是一种插入和删除分别在两端进行...
  • mynameishuangshuai
  • mynameishuangshuai
  • 2016年09月28日 22:24
  • 1546

非結構化數據分析

結構化數據>>數據庫   二維表   非結構化數據>>信息檢索  自由文本最典型 圖片 視頻 音頻    以關鍵字查詢 半結構化數據 文本挖掘的基本流程: 分詞tokenize...
  • yrunagate
  • yrunagate
  • 2016年03月15日 17:26
  • 141

从mysql数据库中导入数据到solr4.5

实际 项目中,我们需要把已存在于数据库中的数据导入到solr索引库中,solr给我们提供了一个非常简便的方式,下面我们以mysql数据为例。 假设我们数据名叫database,数据表叫user,u...
  • zhangyaoming2004
  • zhangyaoming2004
  • 2015年04月01日 12:09
  • 2367

清空(數據庫中所有)表數據

1.delete 與 truncate delete 模式一般為 delete from table_name where {search_condition},可實現選擇性地刪除表中某些條記錄,當沒...
  • Benjayming
  • Benjayming
  • 2013年08月13日 21:52
  • 869

LabVIEW按钮延时自动弹起

同事在现场碰到的问题: 要求按钮被按下后,一定时间后自动弹起。 问题分析: 1、采用事件结构,记录按钮按下的时间; 2、只有当按钮按下时,才开始计时; 3、计时结束后,弹起按钮,并初始化计时器; ...
  • ap0108220
  • ap0108220
  • 2013年11月19日 15:38
  • 2198

C++ 纯虚函数

声明:virtual    ()  = 0;  // 没有花括号 纯虚函数:不给出函数的实现代码,没有函数体,仅为类族提供统一的接口,相当于标准接口。在派生类中如果给出了纯虚函数的具体实现,该函数...
  • ForestRound
  • ForestRound
  • 2016年10月03日 17:08
  • 309

Sybase IQ数据库之导出、导入研究

导读:本文介绍了Sybase IQ导出、导入数据的相关内容,Sybase IQ是一个强大的即席查询服务器,用户可以使用Sybase IQ来分离决策支持系统和在线事务处理系统。 【TechTarg...
  • shixiaoguo90
  • shixiaoguo90
  • 2015年11月14日 14:49
  • 1167

[论文]内存数据库中的索引技术

图2-1T-Tree的结点 T-tree索引用来实现关键字的范围查询。T-tree是一棵特殊平衡的二叉树(AVL),它的每个节点存储了按键值排序的一组关键字。T-tree除了较高的节点空间占有率...
  • zhujunxxxxx
  • zhujunxxxxx
  • 2015年01月07日 12:16
  • 20215
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用自訂函數實現功能-------根據指定表名得到表的結構
举报原因:
原因补充:

(最多只允许输入30个字)