1. <var id="fe6gj"></var>

    <rp id="fe6gj"><nav id="fe6gj"></nav></rp>

    <noframes id="fe6gj"><cite id="fe6gj"></cite>

    <ins id="fe6gj"><button id="fe6gj"><p id="fe6gj"></p></button></ins>
    1. <tt id="fe6gj"><i id="fe6gj"><sub id="fe6gj"></sub></i></tt>
        始創于2000年 股票代碼:831685
        咨詢熱線:0371-60135900 注冊有禮 登錄
        • 掛牌上市企業
        • 60秒人工響應
        • 99.99%連通率
        • 7*24h人工
        • 故障100倍補償
        您的位置: 網站首頁 > 幫助中心>文章內容

        PostgreSQL游標使用舉例

        發布時間:  2012/9/3 17:07:44

        1、下面的代碼會創建一個top100cur()函數,該函數返回一個匿名游標

        --drop function top100cur();   
          
        create function top100cur() returns refcursor as $$  
        declare   
            abc refcursor;  
        begin  
            open abc for select * from person limit 100;  
            return abc;  
        end  
        $$language plpgsql;  
          
        SELECT top100cur();--返回匿名游標   
        --fetch all from abc;--匿名游標,所以此行錯誤 
        2、下面的代碼會創建的函數會返回一個名字為abc的游標(能發現差別吧?是的,是否匿名,取決于open游標時,該游標變量是否已經綁定)
        --drop function top100cur();   
          
        create function top100cur() returns refcursor as $$  
        declare   
            abc cursor for select * from person limit 100;  
        begin  
            open abc;  
            return abc;  
        end  
        $$language plpgsql;  
          
        SELECT top100cur();--返回名字為abc的游標   
        fetch all from abc;--此行正確,執行時,記得把此行與select行以前拖黑,然后F5 
        3、返回由調用者命名的游標
        --drop function top100cur(refcursor);   
        create function top100cur(refcursor) returns refcursor as $$  
        begin  
            open $1 for select * from person limit 100;  
            return $1;  
        end  
        $$language plpgsql;  
          
        SELECT top100cur('abc');  
        fetch all from abc; 
        4、返回一個名字叫$1的游標
        --drop function top100cur(refcursor);   
        create function top100cur(refcursor) returns refcursor as $$  
        declare   
            $1 cursor for select * from person limit 100;  
        begin  
            open $1;--不open的話,返回的名字為"$1"游標不能使用!   
            return $1;  
        end  
        $$language plpgsql;  
          
        SELECT top100cur('abc');  
        fetch all from "$1"; 
        5、返回一個匿名的游標
        --drop function top100cur(refcursor);   
        create function top100cur(refcursor) returns refcursor as $$  
        declare   
            $1 refcursor;  
        begin  
            open $1 for select * from person limit 100;  
            return $1;  
        end  
        $$language plpgsql;  
          
        SELECT top100cur('abc');  
        --fetch all from "$1";--匿名游標,所以此行錯誤 
        6、返回由調用者指定的游標(知道跟4和5的不同吧?4、5中,declare聲明的游標變量名稱太特殊了,把匿名參數的名字隱藏了……)
        --drop function top100cur(refcursor);   
        create function top100cur(refcursor) returns refcursor as $$  
        declare   
            abcdef refcursor;  
        begin  
            open $1 for select * from person limit 100;  
            return $1;  
        end  
        $$language plpgsql;  
          
        SELECT top100cur('abc');  
        fetch all from "abc"; 

        7、直接open一個沒有被declare,也沒有被傳入的游標變量

        --drop function top100cur(refcursor);   
        create function top100cur(refcursor) returns refcursor as $$  
        declare   
            abcdef refcursor;  
        begin  
            --open defg for select * from person limit 100;--錯誤:  "defg" 不是一個已知變量   
            --return defg;-----------LINE 5:  open defg for select * from person limit 100;   
        end  
        $$language plpgsql; 

        總結:

        1、declare的變量,會導致函數參數被隱藏(如,declare $1后,則第一個匿名參數就被隱藏了);

        2、declare只是聲明一個游標,不會open游標,而沒有open的游標是不能用的哦~

        3、declare之后再open游標時,如果這個游標是個未綁定的(declare時沒有cursor for XXX),那么open后得到的是一個匿名游標;

        4、open操作的游標變量,要么是declare的,要么是當做參數傳入的字符串;除此之外,報錯!


        本文出自:億恩科技【www.endtimedelusion.com】

        服務器租用/服務器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質保障!--億恩科技[ENKJ.COM]

      1. 您可能在找
      2. 億恩北京公司:
      3. 經營性ICP/ISP證:京B2-20150015
      4. 億恩鄭州公司:
      5. 經營性ICP/ISP/IDC證:豫B1.B2-20060070
      6. 億恩南昌公司:
      7. 經營性ICP/ISP證:贛B2-20080012
      8. 服務器/云主機 24小時售后服務電話:0371-60135900
      9. 虛擬主機/智能建站 24小時售后服務電話:0371-60135900
      10. 專注服務器托管17年
        掃掃關注-微信公眾號
        0371-60135900
        Copyright© 1999-2019 ENKJ All Rights Reserved 億恩科技 版權所有  地址:鄭州市高新區翠竹街1號總部企業基地億恩大廈  法律顧問:河南亞太人律師事務所郝建鋒、杜慧月律師   京公網安備41019702002023號
          0
         
         
         
         

        0371-60135900
        7*24小時客服服務熱線

         
         
        av不卡不卡在线观看_最近2018年中文字幕_亚洲欧美一区二区三区_一级A爱做片免费观看国产_日韩在线中文天天更新_伊人中文无码在线