• 标量值函数定义 和 使用实例


    CREATE FUNCTION 自定义函数名(
        自定义参数

    )
    RETURNS 返回值类型

    AS
    BEGIN

        --声明返回值

        DECLARE <@ResultVar, sysname, @Result> <Function_Data_Type, ,int>

        -- 通过查询给返回值赋值

        SELECT <@ResultVar, sysname, @Result> = <@Param1, sysname, @p1>

        -- return返回值

        RETURN <@ResultVar, sysname, @Result>

    END

    ***************************************实例***************************************

    定义:

    USE [MyTest]
    GO
    /****** Object:  UserDefinedFunction [dbo].[FunGetMatByAtrID]    Script Date: 01/09/2012 11:24:58 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    -- =============================================
    -- Author:  zyp
    -- Create date: 2012-01-09
    -- Description: 
    -- =============================================
    ALTER FUNCTION [dbo].[FunGetMatByAtrID]
    (
     @atrid int
    )
    RETURNS nvarchar(500)
    AS
    BEGIN
     declare @strTemp nvarchar(500)
     declare @strReturn nvarchar(500)

    --内部变量的定义之间是不需要逗号  或者  分号分隔的哦

    --注意表的定义,要初始化这个表的字段。如果写成declare @temp table这是有问题的哦。
     declare @temp table(rowid int,title nvarchar(100))
     declare @i int
     

    --注意:这里有几个初始值赋值:

    --@i无可非议,要从第一个开始。

    --@strTemp和@strReturn这两个参数,因为后边涉及到字符串的拼接,一定要赋初始值为'',否则最后怎么拼,都是NULL。
     set @i = 1;
     set @strTemp = '';
     set @strReturn = '';

    --这里也相当于是初始值赋值,不过是某个表的数据插入:

    --在函数里,应该是不能用临时表的。所以这里借助了另外一个表值函数。
     insert into @temp
     select rowid,title from dbo.FunGetMaterialList(@atrid);
     
     while(@i <= (select COUNT(1) from @temp))
     begin
      select @strTemp = title from @temp where rowid=@i;
      set @strReturn = @strReturn + @strTemp + ',';
      set @i = @i + 1;
     end
     set @strReturn = SUBSTRING(@strReturn,1,LEN(@strReturn)-1);
     
     
     return @strReturn;
    END

     

     

    标量值函数的调用:

    select dbo.[FunGetMatByAtrID](1)

  • 相关阅读:
    struts2学习笔记之校验器
    struts2学习笔记之文件上传
    在ASP.net MVC里用Jquery的Ajax功能调用相关LinqtoSQL生成的类出现错误循环引用
    Linq,企业类库,EXECL生成,Execl chart的一些基本操作记录.(一)
    记录Linq所学.
    记录一个很平常的想法.
    链表反序(C#版)
    oracle 体系结构
    Oracle的sys和system用户的区别
    数据库触发器的理解
  • 原文地址:https://www.cnblogs.com/mili3/p/3083332.html
Copyright © 2020-2023  润新知