本人写的数据库常用函数(存储过程中经常要用到)

简介: GO /****** 对象: UserDefinedFunction [dbo].[fun_get_LowerFirst] 脚本日期: 08/04/2012 13:03:56 ******/ IF EXISTS (SELECT * FROM sys.
GO
/****** 对象:  UserDefinedFunction [dbo].[fun_get_LowerFirst]    脚本日期: 08/04/2012 13:03:56 ******/
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[fun_get_comment]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT'))
DROP FUNCTION [dbo].[fun_get_comment]
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
/*****************************************************
** DECRIPTION: 获取表中字段的描述(说明)
** VERSION      AUTH          DATE          Defect No			DESC
** --------  ------------  ------------  -----------------   ------------------------------
** V000.0.1    pukuimin     08/04/2012							新建程序						
** --------  ------------  ------------  -----------------   -------------------------------
*******************************************************/
GO
create function [dbo].[fun_get_comment](
							@tablename varchar(200),  ----表名
							@fieldname varchar(200)  ----字段名
								 )
returns varchar(200)
as
begin	
declare @returnstr varchar(200)

select distinct @returnstr =cast(b.value as varchar(200))
from syscolumns a left outer join sys.extended_properties b 
on a.id=b.major_id and a.colid=b.minor_id 
where a.name=@fieldname and a.id=object_id(@tablename)
if isnull(@returnstr,'')=''
	begin
	set @returnstr=''
	end
return @returnstr
end

/*

REF_SEQ

T_PO_REQ_ORDR_LINE


select [dbo].[fun_get_comment]('stuinfo','username')

*/


GO
/****** 对象:  UserDefinedFunction [dbo].[fun_get_UpperFirst]    脚本日期: 08/03/2012 10:10:07 ******/
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[fun_get_UpperFirst]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT'))
DROP FUNCTION [dbo].[fun_get_UpperFirst]

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
/*****************************************************
** DECRIPTION: 将字符串首字母大写
** VERSION      AUTH          DATE          Defect No			DESC
** --------  ------------  ------------  -----------------   ------------------------------
** V000.0.1    pukuimin     08/03/2012							新建程序						
** --------  ------------  ------------  -----------------   -------------------------------
*******************************************************/
GO
create function [dbo].[fun_get_UpperFirst](  @letters varchar(200)
								 )
returns varchar(200)
as
begin
declare @returnstr varchar(200)

if isnull(@letters,'')='' set @returnstr=''
else
set @returnstr=Upper(Substring(@letters,1,1))+Substring(@letters,2,len(@letters)-1)
return @returnstr
end


GO
/****** 对象:  UserDefinedFunction [dbo].[fun_get_LowerFirst]    脚本日期: 08/03/2012 10:10:33 ******/
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[fun_get_LowerFirst]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT'))
DROP FUNCTION [dbo].[fun_get_LowerFirst]

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
/*****************************************************
** DECRIPTION: 字符串首字母小写
** VERSION      AUTH          DATE          Defect No			DESC
** --------  ------------  ------------  -----------------   ------------------------------
** V000.0.1    pukuimin     08/04/2012							新建程序						
** --------  ------------  ------------  -----------------   -------------------------------
*******************************************************/
GO
create function [dbo].[fun_get_LowerFirst](  @letters varchar(200)
								 )
returns varchar(200)
as
begin	
declare @returnstr varchar(200)
if isnull(@letters,'')='' set @returnstr=''
else
set @returnstr=Lower(Substring(@letters,1,1))+Substring(@letters,2,len(@letters)-1)
return @returnstr
end


GO
/****** 对象:  UserDefinedFunction [dbo].[fun_get_PrimaryKey]    脚本日期: 08/04/2012 14:41:32 ******/
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[fun_get_PrimaryKey]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT'))
DROP FUNCTION [dbo].[fun_get_PrimaryKey]
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************************************************
** PROCEDURE : [pro_GenerateProSet]
** DECRIPTION: 获取表的主键(多个以“,”分开)
** VERSION      AUTH          DATE          Defect No			DESC
** --------  ------------  ------------  -----------------   ------------------------------
** V000.0.1    pukuimin     08/04/2012							新建程序						
** --------  ------------  ------------  -----------------   -------------------------------
*******************************************************/

create function [dbo].[fun_get_PrimaryKey](
							@tablename varchar(200)  ----表名
								 )
returns varchar(200)
as
begin	
declare @returnstr varchar(200)

set @returnstr=''
--select distinct @returnstr =cast(b.value as varchar(200))


SELECT @returnstr=@returnstr+CCU.COLUMN_NAME+','
FROM     INFORMATION_SCHEMA.TABLE_CONSTRAINTS TC 
    INNER JOIN INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE CCU ON TC.CONSTRAINT_NAME = CCU.CONSTRAINT_NAME
WHERE TC.TABLE_NAME = @tablename AND TC.CONSTRAINT_TYPE='PRIMARY KEY'
set @returnstr=LEFT(@returnstr,LEN(@returnstr)-1)
if isnull(@returnstr,'')=''
	begin
	set @returnstr=''
	end
return @returnstr
end

/*

select [dbo].[fun_get_PrimaryKey]('stuinfo')

*/



GO
/****** 对象:  UserDefinedFunction [dbo].[fun_get_unique_column]    脚本日期: 08/04/2012 14:41:32 ******/
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[fun_get_unique_column]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT'))
DROP FUNCTION [dbo].[fun_get_unique_column]

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************************************************
** DECRIPTION: 获取表的自动增长列
** VERSION      AUTH          DATE          Defect No			DESC
** --------  ------------  ------------  -----------------   ------------------------------
** V000.0.1    pukuimin     08/04/2012							新建程序						
** --------  ------------  ------------  -----------------   -------------------------------
*******************************************************/
create function [dbo].[fun_get_unique_column](
							@tablename varchar(200)  ----表名
								 )
returns varchar(200)
as
begin	
declare @returnstr varchar(200)
set @returnstr=''

select top 1 @returnstr = a.Name
from syscolumns a 
left join sysobjects b on a.iD=b.parent_obj and b.xtype='PK'
where a.ID=object_id(@tablename) and a.status=0x80

if isnull(@returnstr,'')=''
	begin
	set @returnstr=''
	end
return @returnstr
end

/*

select [dbo].[fun_get_unique_column]('stuinfo')

*/

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[fun_get_tabspace]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT'))
DROP FUNCTION [dbo].[fun_get_tabspace]

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
/*****************************************************
** DECRIPTION: 得到Tab空格个数  4*n个空格
** VERSION      AUTH          DATE          Defect No			DESC
** --------  ------------  ------------  -----------------   ------------------------------
** V000.0.1    pukuimin     08/03/2012							新建程序						
** --------  ------------  ------------  -----------------   -------------------------------
*******************************************************/
GO
create function [dbo].[fun_get_tabspace](
@TabCount int ----Tab个数
)
returns varchar(200)
as

begin
declare @returnstr varchar(200)
declare @mycount int
	set @mycount=isnull(@TabCount,0)
	set @returnstr=''
	while (@mycount>0)
		begin
			set @mycount=@mycount-1
			set @returnstr=@returnstr+'    '
		end
	return @returnstr
end

/*
select [dbo].[fun_get_tabspace](3) as test
*/


GO
/****** 对象:  UserDefinedFunction [dbo].[fun_get_column_length]    脚本日期: 08/04/2012 14:15:10 ******/
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[fun_get_column_length]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT'))
DROP FUNCTION [dbo].[fun_get_column_length]
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************************************************
** DECRIPTION: 获取表中某字段定义的长度(带“()”)
** VERSION      AUTH          DATE          Defect No			DESC
** --------  ------------  ------------  -----------------   ------------------------------
** V000.0.1    pukuimin     08/04/2012							新建程序						
** --------  ------------  ------------  -----------------   -------------------------------
*/

 create function [dbo].[fun_get_column_length](
							@tablename varchar(200),  ----表名
							@fieldname varchar(200)  ----字段名
								 )
returns varchar(200)
as
begin	
declare @returnstr varchar(200)

select @returnstr=cast( 
    CASE 
		WHEN DATA_TYPE='NVARCHAR' OR DATA_TYPE='VARCHAR' OR DATA_TYPE='CHAR'OR DATA_TYPE='NCHAR'
        THEN '('+CAST(CHARACTER_MAXIMUM_LENGTH AS NVARCHAR(20))+')'
		when data_type='numeric' 
		then '('+CAST(numeric_precision AS NVARCHAR(20))+','+CAST(numeric_scale AS NVARCHAR(20))+')'
    ELSE
        ''
    END
as varchar(200)
)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = @tablename and COLUMN_NAME=@fieldname
 
if isnull(@returnstr,'')=''
	begin
	set @returnstr=''
	end
return @returnstr
end

/*
select [dbo].[fun_get_column_length]('stuinfo','id')
*/


GO
/****** 对象:  UserDefinedFunction [dbo].[fun_get_column_str_length]    脚本日期: 08/04/2012 14:15:10 ******/
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[fun_get_column_str_length]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT'))
DROP FUNCTION [dbo].[fun_get_column_str_length]
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************************************************
** DECRIPTION: 获取表中某—字符类型/numeric—字段的长度
** VERSION      AUTH          DATE          Defect No			DESC
** --------  ------------  ------------  -----------------   ------------------------------
** V000.0.1    pukuimin     08/04/2012							新建程序						
** --------  ------------  ------------  -----------------   -------------------------------
*/

 create function [dbo].[fun_get_column_str_length](
							@tablename varchar(200),  ----表名
							@fieldname varchar(200)  ----字段名
								 )
returns varchar(200)
as
begin	
declare @returnstr varchar(200)

select @returnstr=cast( 
    CASE 
		WHEN DATA_TYPE='NVARCHAR' OR DATA_TYPE='VARCHAR' OR DATA_TYPE='CHAR'OR DATA_TYPE='NCHAR'
        THEN CAST(CHARACTER_MAXIMUM_LENGTH AS NVARCHAR(20))
		when data_type='numeric' 
		then CAST(numeric_precision AS NVARCHAR(20))
    ELSE
        ''
    END
as varchar(200)
)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = @tablename and COLUMN_NAME=@fieldname
 
if isnull(@returnstr,'')=''
	begin
	set @returnstr=''
	end
return @returnstr
end

/*

select [dbo].[fun_get_column_str_length]('stuinfo','id')
*/

GO
/****** 对象:  UserDefinedFunction [dbo].[fun_get_param_length]    脚本日期: 08/04/2012 14:15:10 ******/
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[fun_get_param_length]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT'))
DROP FUNCTION [dbo].[fun_get_param_length]
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*****************************************************
** DECRIPTION: 获取存储过程中参数字符串类型/numeric字段的长度
** VERSION      AUTH          DATE          Defect No			DESC
** --------  ------------  ------------  -----------------   ------------------------------
** V000.0.1    pukuimin     08/04/2012							新建程序						
** --------  ------------  ------------  -----------------   -------------------------------
*/

 create function [dbo].[fun_get_param_length](
							@ProName varchar(200),  ----存储过程名
							@fieldname varchar(200)  ----字段名
								 )
returns varchar(200)
as
begin	
declare @returnstr varchar(200)
 
select @returnstr=cast( 
    CASE 
		WHEN type_name(user_type_id)='NVARCHAR' OR type_name(user_type_id)='VARCHAR' OR type_name(user_type_id)='CHAR'OR type_name(user_type_id)='NCHAR'
        THEN CAST(max_length AS NVARCHAR(20))
		when type_name(user_type_id)='numeric' 
		then CAST(case when type_name(system_type_id) = 'uniqueidentifier' then precision  
        else OdbcPrec(system_type_id, max_length, precision) end AS NVARCHAR(20))
    ELSE
        ''
    END
as varchar(200)
)
from sys.all_parameters where object_id = object_id(@ProName) and [name]=@fieldname

if isnull(@returnstr,'')=''
	begin
	set @returnstr=''
	end
return @returnstr
end

/*

select [dbo].[fun_get_param_length]('pro_set_Stuinfo','@score')

*/



相关文章
|
4月前
|
SQL 数据挖掘 测试技术
南大通用GBase8s数据库:LISTAGG函数的解析
南大通用GBase8s数据库:LISTAGG函数的解析
|
4月前
|
SQL 测试技术 数据库
|
5月前
|
SQL 数据库 数据库管理
数据库SQL函数应用技巧与方法
在数据库管理中,SQL函数是处理和分析数据的强大工具
|
5月前
|
存储 SQL 关系型数据库
MySql数据库---存储过程
MySql数据库---存储过程
76 5
|
7月前
|
SQL 数据处理 数据库
|
7月前
|
JSON 数据格式 Java
化繁为简的魔法:Struts 2 与 JSON 联手打造超流畅数据交换体验,让应用飞起来!
【8月更文挑战第31天】在现代 Web 开发中,JSON 成为数据交换的主流格式,以其轻量、易读和易解析的特点受到青睐。Struts 2 内置对 JSON 的支持,结合 Jackson 库可便捷实现数据传输。本文通过具体示例展示了如何在 Struts 2 中进行 JSON 数据的序列化与反序列化,并结合 AJAX 技术提升 Web 应用的响应速度和用户体验。
183 0
|
7月前
|
存储 SQL 数据库
|
7月前
|
SQL 关系型数据库 MySQL
SQL Server、MySQL、PostgreSQL:主流数据库SQL语法异同比较——深入探讨数据类型、分页查询、表创建与数据插入、函数和索引等关键语法差异,为跨数据库开发提供实用指导
【8月更文挑战第31天】SQL Server、MySQL和PostgreSQL是当今最流行的关系型数据库管理系统,均使用SQL作为查询语言,但在语法和功能实现上存在差异。本文将比较它们在数据类型、分页查询、创建和插入数据以及函数和索引等方面的异同,帮助开发者更好地理解和使用这些数据库。尽管它们共用SQL语言,但每个系统都有独特的语法规则,了解这些差异有助于提升开发效率和项目成功率。
783 0
|
7月前
|
存储 SQL 安全
【数据库高手的秘密武器:深度解析SQL视图与存储过程的魅力——封装复杂逻辑,实现代码高复用性的终极指南】
【8月更文挑战第31天】本文通过具体代码示例介绍 SQL 视图与存储过程的创建及应用优势。视图作为虚拟表,可简化复杂查询并提升代码可维护性;存储过程则预编译 SQL 语句,支持复杂逻辑与事务处理,增强代码复用性和安全性。通过创建视图 `high_earners` 和存储过程 `get_employee_details` 及 `update_salary` 的实例,展示了二者在实际项目中的强大功能。
71 1
|
7月前
|
存储 SQL JSON
【Azure Logic App】微软云逻辑应用连接到数据库,执行存储过程并转换执行结果为JSON数据
【Azure Logic App】微软云逻辑应用连接到数据库,执行存储过程并转换执行结果为JSON数据
【Azure Logic App】微软云逻辑应用连接到数据库,执行存储过程并转换执行结果为JSON数据

热门文章

最新文章