<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    悟心

    成功不是將來才有的,而是從決定去做的那一刻起,持續(xù)累積而成。 上人生的旅途罷。前途很遠(yuǎn),也很暗。然而不要怕。不怕的人的面前才有路。

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      93 隨筆 :: 1 文章 :: 103 評論 :: 0 Trackbacks
    由于工作的需要,了解下SQL Server 2005 函數(shù)的寫法,現(xiàn)在總結(jié)一下:

    對于SQL Server 
    2005 數(shù)據(jù)庫而言,函數(shù)與存儲過程在語法方面是有很大的相同點,

    最大的不同就是函數(shù)有返回值,直接使用returns ,而存儲過程則使用output來聲明輸出變量

    一、下面先說明下,如何創(chuàng)建函數(shù)

    1、創(chuàng)建沒有返回值與沒有參數(shù)的函數(shù)

    CREATE FUNCTION my_function()

    AS

    BEGIN

        
    DECLARE @variable varchar(255--聲明字符型變量

        
    DECLARE @variable int --聲明整形型變量

        (do something)

    SET @variable = '12345' --對變量variable賦值

    END

    2、創(chuàng)建沒有返回值有參數(shù)的函數(shù)

    CREATE FUNCTION my_function(@user_Name varchar(128),@password int(6))

    AS

    BEGIN

        
    DECLARE @variable_1 varchar(255--聲明字符型變量

        (do something)

    SET @variable_1 = @user_Name + convert(varchar(255),@password--將變量@user_Name與@password連接賦給@variable_1,其中convert()函數(shù)是將int型轉(zhuǎn)為varchar型

    END

    3、創(chuàng)建有返回值與有參數(shù)的函數(shù)

    CREATE FUNCTION my_function(@user_Name varchar(128),@password int(6))

    returns varchar(255)--設(shè)置返回值,記住是returns 而不是return

    AS

    BEGIN

        
    DECLARE @result varchar(5)

        
    DECLARE @fagle varchar(5)

    SET @result = select users.user_Name from USERS as users where users.user_Name = @user_Name and users.password = @password

    IF @result = ''

        
    BEGIN

           
    SET @fagle = 'NO'

        
    END

    ELSE

        
    BEGIN

           
    SET @falge = 'YES'

        
    END

    return @result --返回結(jié)果

    END

    二、刪除一個函數(shù)語法

    DROP FUNCTION my_function

    三、執(zhí)行一個函數(shù)語法

    select dbo.my_function(--根據(jù)有沒參數(shù)來處理

    go

    --注:在SQL Server 2005 中,有內(nèi)部函數(shù)與外部函數(shù),數(shù)據(jù)庫系統(tǒng)自帶函數(shù),如sum(),count()等等,這些稱為內(nèi)部函數(shù),而我們自定義的函數(shù)稱為外部函數(shù)。

    --在執(zhí)行函數(shù)語法中,也有些區(qū)別,如執(zhí)行內(nèi)部函數(shù):select sum(total) from ,那么執(zhí)行外部函數(shù)則需要在函數(shù)名前加dbo. + 自定義函數(shù)名,如

    --select dbo.my_function()

    --go

    四、下面提供二個例子

    1、日期判斷,判斷傳進來的日期是否在上個月日到本月日之間

    --請注意convert()函數(shù)的用法

    create function isNewContract(@date varchar(32))

    returns varchar(32)

    AS

    begin

        
    declare @begin_time varchar(32)

        
    declare @end_time varchar(32)

        
    declare @temp varchar(4)

        
    declare @result varchar(32)

        
    declare @month varchar(2)

    set @begin_time=convert(varchar,DATEPART(yeargetdate())) + '-'

    set @end_time=convert(varchar,DATEPART(yeargetdate())) + convert(varcharDATEPART(monthgetdate())) + convert(varchar'14')

    set @temp=convert(varchar(2),(month(getDate())-1 ))

    if(@temp < 10 )

    begin

        
    set @begin_time = @begin_time + convert(varchar(1),'0'+ @temp + '-' + convert(varchar'15')

    end

    if(@date >= @begin_time and @date <= @end_time)

    begin

    set @result = ''

    end

    else

    begin

    set @result = @begin_time

    end

    return @result

    end

    2、查詢多條記錄合并成一條記錄返回,并寫入EXECL表中,進行分行換行顯示,其中使用游標(biāo)進行循環(huán)處理

    --在數(shù)據(jù)庫中,EXECL默認(rèn)換行符ACSII碼為'10',在合并字符串之前,需要先轉(zhuǎn)為EXECL識別的換行符,具體使用chat()內(nèi)部函數(shù)處理

    create function getExportReportCollect(@projectId int ,@month varchar(64))

    returns varchar(4096--設(shè)置返回值

    AS

    begin

        
    declare @num varchar(2)

        
    declare @end varchar(10)

        
    declare @Result varchar(4096--用于返回查詢結(jié)果

        
    declare city_cursor cursor for --聲明游標(biāo)變量

        
    select reported.id

        
    from dbo.Investment_Budget_Reported as reported

        
    left join dbo.Investment_Budget_Contract as con

        
    on reported.contractId = con.id

        
    where reported.[month] = @month and reported.projectId = @projectId

    set @Result=''

    set @num = '1'

    set @end = '10' --導(dǎo)入EXECL表中,換行符的ACSII碼

    declare @Field int --聲明臨時存放CityID的變量

    open city_cursor --打開游標(biāo)

    fetch next from city_cursor into @Field --將實際ID賦給變量

    while(@@fetch_status = 0--循環(huán)開始

    begin

        
    if((select [content] from dbo.Investment_Budget_Reported where id = @Field )is not null)

        
    BEGIN

         

           
    if(@Result = '')

               
    select @Result = @Result + @num + '' + [content] from dbo.Investment_Budget_Reported where id = @Field

           
    else

               
    select @Result = @Result + @num + '' + [content] from dbo.Investment_Budget_Reported where id = @Field

        
    set @Result = @Result + char(@end--讓換行符轉(zhuǎn)為EXECL認(rèn)識的換行符

    set @num = @num + 1

        
    END

           
    fetch next from city_cursor into @Field --下一個reportId

    end

    close city_cursor --關(guān)閉游標(biāo)

    deallocate city_cursor --釋放游標(biāo)引用

    return @Result

    end


    本文來自CSDN博客,轉(zhuǎn)載請標(biāo)明出處:http:
    //blog.csdn.net/zhdd1234/archive/2009/10/27/4734789.aspx
    posted on 2010-12-16 19:38 艾波 閱讀(2945) 評論(1)  編輯  收藏 所屬分類: SQL

    評論

    # re: SQL Server 2005 自定義函數(shù)語匯小結(jié) 2010-12-30 17:09 路過
    最大的不同就是函數(shù)有返回值,直接使用returns ,而存儲過程則使用output來聲明輸出變量..你確定?
      回復(fù)  更多評論
      

    主站蜘蛛池模板: 成人免费毛片内射美女APP | 成年大片免费视频| 亚洲最大免费视频网| 午夜视频在线免费观看| 无码A级毛片免费视频内谢| 国产一级片免费看| 一级毛片不卡片免费观看| 真实国产乱子伦精品免费| aⅴ在线免费观看| 国产情侣激情在线视频免费看| 久草在视频免费福利| 女人18毛片a级毛片免费视频| 天天摸天天碰成人免费视频| 日韩成全视频观看免费观看高清| 日美韩电影免费看| 亚洲高清国产拍精品青青草原| 久久久无码精品亚洲日韩软件| 久久久久久久综合日本亚洲| 亚洲精品免费在线观看| 亚洲一区二区三区在线| 亚洲av无码片vr一区二区三区| 免费无遮挡无遮羞在线看| a级大片免费观看| 最近免费中文字幕mv在线电影| 成人免费无码视频在线网站| 国产精品国产免费无码专区不卡| 亚洲精品无码成人片在线观看| 亚洲AV中文无码字幕色三| 亚洲网红精品大秀在线观看| 亚洲欧洲无码一区二区三区| 高h视频在线免费观看| 永久免费av无码入口国语片| 2015日韩永久免费视频播放| 日韩a级毛片免费视频| 国产亚洲大尺度无码无码专线 | 热99re久久免费视精品频软件| 亚洲第一视频在线观看免费| 久久久亚洲精品国产| 亚洲综合在线一区二区三区| 国产精品小视频免费无限app| 99久久人妻精品免费二区|