zoukankan      html  css  js  c++  java
  • 常用Sql server 自定义函数


    /****** 对象: 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
    GO
    /*

    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')

    */

  • 相关阅读:
    EntityFramework优缺点
    领导者与管理者的区别
    七个对我最好的职业建议(精简版)
    The best career advice I’ve received
    Difference between Stored Procedure and Function in SQL Server
    2015年上半年一次通过 信息系统项目管理师
    Difference between WCF and Web API and WCF REST and Web Service
    What’s the difference between data mining and data warehousing?
    What is the difference between a Clustered and Non Clustered Index?
    用new创建函数的过程发生了什么
  • 原文地址:https://www.cnblogs.com/dragon2017/p/9229094.html
Copyright © 2011-2022 走看看