用自訂函式實現功能-------根據指定表名得到表的結構 (轉)
函式功能:根據表名得到表的列名和型別
當我們在編寫時,多少都會用到一些系統內建的函式,如right(),datalength()等,但是,當我們在工程開發時,如果希望能實現一些符合特殊的要求的處理的話,就需要自已編寫函式,如下面的例子是一個得到表的結構的函式
函式的分類:
1.純量函式:此類函式隻傳導回單一的資料值
2.傳回資料集的函式:傳回一個Table型別的資料集,分為以下兩類:
2.1 行內資料集函式:函式的內容是一個 語句
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.先從表syss中得到與傳入的表名(name)相匹配的物件識別碼(id)
--sysobjects是包含在資料庫中建立的每一個物件 (條件約束、預設值、記錄檔、規則、儲存過程等等) 的一有資料列
select @objid=id from sysobjects where id=object_id(@objname)
--sylumns是包含每個資料表及檢視中的每個資料行的一資料列
---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 to:id=@objid">id=@objid and number=0 order by colid
return
end
liaodaibo
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-993493/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 根據表結構,自動生成匯入指令碼指令碼
- EF:根據實體類生成表結構SQLSQL
- 根據結構基本相同的A表的值更新B表
- SQL server根據表名查詢表主鍵SQLServer
- 根據欄位名等查詢SAP的表或結構(程式程式碼)
- SAP RETAIL 如何根據分配表查到根據它建立的採購訂單?AI
- 根據欄位名查詢所有表
- 用表函式實現OTOP 工具函式
- 【Golang】基於beego/orm實現相同表結構不同表名的分表方法實現GolangORM
- 一個根據已有表結構來建立新表的儲存過程儲存過程
- java 實現根據年月得到這個月的日曆Java
- MSSql得到表的結構和欄位SQL
- Oracle根據表名查詢表空間及資料檔案的地址Oracle
- 用 VB 實現表單的自動提交 (轉)
- EBS 單個報表(非報表集)根據報表名稱獲取報表源程式
- PHP根據資料表自動生成CURD操作PHP
- mybatis根據表逆向自動化生成程式碼MyBatis
- PLSQL根據分割槽表的分割槽名批次truncate分割槽SQL
- 根據包名,在指定空間中建立物件物件
- MySQL用表實現號池的功能MySql
- 實現MySQL表結構自動分割槽指令碼MySql指令碼
- 根據表查詢索引資訊索引
- 根據父表查詢子表
- MYSQL建立多張表,相同表結構,不同表名MySql
- django | 根據 model 建立對應的表Django
- 寫了個根據表名初始化所有模型的擴充套件模型套件
- MyBatis實現MySQL表欄位及結構的自動增刪MyBatisMySql
- SpringBoot使用JPA根據實體類自動生成相應表-mysqlSpring BootMySql
- Oracle表結構轉換SqlSERVER表結構 指令碼OracleSQLServer指令碼
- 根據源庫表空間實際使用建立表空間指令碼指令碼
- 【小山】sql server通過查詢系統表得到縱向的表結構SQLServer
- 根據表空間的TSPITR恢復
- Django2.0-db(12)-根據已有的表自動生成模型Django模型
- 得到固定字元位置的函式 (轉)字元函式
- 根據稅碼取得稅率函式函式
- go根據字元動態設定結構體欄位名--hprose rpc應用Go字元結構體ROSRPC
- MyBatis 根據資料表反向生成 java 實體類等MyBatisJava
- Sql Server 獲取指定表、檢視結構SQLServer