<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 40.2\. PL/pgSQL的結構 PL/pgSQL是一種塊結構的語言。 函數定義的所有文本都必須是一個塊(_block_)。 可以用下面的方法定義一個塊: ``` [ <<`_label_`>> ] [ DECLARE `_declarations_` ] BEGIN _statements_ END [ `_label_` ]; ``` 塊中的每個聲明和每條語句都是用一個分號終止的, 如果一個子塊在另外一個塊里,那么`END`后面必須有個分號,如上所述; 不過結束函數體的最后的`END`可以不要這個分號。 > **Tip:** 一個常見的錯誤是緊跟在`BEGIN`之后使用一個分號, 這是不正確的,并且會返回一個語法錯誤。 如果你想標記出在`EXIT`聲明中的block,或者描述在block中所聲明的變量名字, 此時,可以選擇使用`_label_`。如果是在`END`之后給出一個標簽,那么, 它必須與block開始時定義的標簽相匹配。 所有的關鍵字都是不區分大小寫的,正如在SQL命令中一樣, 會隱式的將其轉換成小寫,除非是使用雙引號。 如同在普通的SQL語句中一樣,在PL/pgSQL代碼中,用同樣的方式定義注釋: 在語句的最后,通過一個雙破折號(`--`)來開始一條行注釋。 而塊注釋是成對出現的, 通過`/*`和`*/`來定義。 塊語句段里的任何語句都可以是一個_子塊_。子塊可以用于邏輯 分組或者把變量局部化為作用于一個較小的語句組。為了子塊的持續時間任何同樣命名的外部子塊的變量在子塊中聲明變量, 但是如果你符合它們的名字和它們子塊標簽,無論如何你可以訪問外部變量,比如: ``` CREATE FUNCTION somefunc() RETURNS integer AS $$ << outerblock >> DECLARE quantity integer := 30; BEGIN RAISE NOTICE 'Quantity here is %', quantity; -- 在這里的數量是30 quantity := 50; -- -- 創建一個子塊 -- DECLARE quantity integer := 80; BEGIN RAISE NOTICE 'Quantity here is %', quantity; -- 在這里的數量是80 RAISE NOTICE 'Outer quantity here is %', outerblock.quantity; -- 在這里的數量是50 END; RAISE NOTICE 'Quantity here is %', quantity; -- 在這里的數量是50 RETURN quantity; END; $$ LANGUAGE plpgsql; ``` > **Note:** 在任何PL/pgSQL函數主體周圍有隱藏的"外部塊"。 這個塊提供了函數參數的聲明(如果有),以及一些特殊變量比如 `FOUND` (參閱[Section 40.5.5](#calibre_link-1575))。 外部塊可以使用函數的名字標記,意味著參數和特殊變量可以滿足函數名字。 一定不要把PL/pgSQL里用于語句分組的`BEGIN`/`END`和用于事務控制的數據庫命令搞混了。 PL/pgSQL的`BEGIN`/`END`只是用于分組;它們不會開始和結束一個事務。 函數和觸發器過程總是在一個由外層命令建立起來的事務里執行, 它們無法開始或者提交事務,因為PostgreSQL沒有嵌套事務。 不過,一個包含`EXCEPTION`子句的塊實際上形成一個子事務, 它可以在不影響外層事務的情況下回滾。更多相關信息請參閱[Section 40.6.6](#calibre_link-1678)。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看