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

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 40.11\. 開發PL/pgSQL的一些提示 用PL/pgSQL做開發的一個好方法是簡單地使用文本編輯器創建函數, 然后在另外一個控制臺里,用psql加載這些函數。 如果你用這種方法,那么用`CREATE OR REPLACE FUNCTION`寫函數是個好主意。 這樣,重讀文件就可以更新函數定義。比如: ``` CREATE OR REPLACE FUNCTION testfunc(integer) RETURNS integer AS $$ .... $$ LANGUAGE plpgsql; ``` 在運行psql的時候, 可以用下面命令加載或者重載函數定義文件: ``` \i filename.sql ``` 然后馬上發出SQL命令測試該函數。 另外一個開發PL/pgSQL程序的好方法是使用一種支持 過程語言開發的GUI工具。 比如pgAdmin,當然還有其它的。這些工具通常提供了一些很有用的功能, 比如逃逸單引號使得重建和調試函數更簡單等。 ## 40.11.1\. 引號標記處理 PL/pgSQL函數的代碼都是在 `CREATE FUNCTION`里以一個字符串文本的方式聲明的。 如果你用兩邊包圍單引號的常規方式寫字符串文本,那么任何函數體內的單引號都必須寫雙份; 類似的是反斜杠也必須雙份。雙份引號非常乏味,在更復雜的場合下,代碼可能會讓人難以理解, 因為你很容易發現自己需要半打甚至更多相連的引號。 建議你用"dollar-quoted"的字符串文本來寫函數體。 (參閱[Section 4.1.2.4](#calibre_link-736))。使用美元符界定的時候, 你從不需要對任何引號寫雙份, 只需要為每層引號包圍嵌套選擇一個不同的美元符號包圍分隔符即可。 比如,你可能這么寫`CREATE FUNCTION`命令: ``` CREATE OR REPLACE FUNCTION testfunc(integer) RETURNS integer AS $PROC$ .... $PROC$ LANGUAGE plpgsql; ``` 在這個函數體中,可以在SQL命令里使用單引號包圍文本字符串, 用`$$`分隔那些SQL命令的片斷。 如果你需要對包含`$$`的文本進行引號包圍,可以使用`$Q$`等等。 下表展示了不使用美元符界定的時候該如何寫單引號。 把美元符引號之前的引號包圍的代碼轉換成某種可以理解的形式時, 應該會用得上。 1個單引號 開始/結束函數體,比如: ``` CREATE FUNCTION foo() RETURNS integer AS ' .... ' LANGUAGE plpgsql; ``` 在函數體內部的任何位置,問號都_必須_成對出現。 2個單引號 對于函數體內的字符串文本,比如: ``` a_output := ''Blah''; SELECT * FROM users WHERE f_name=''foobar''; ``` 在美元符界定的方法里,你只要寫: ``` a_output := 'Blah'; SELECT * FROM users WHERE f_name='foobar'; ``` 兩種情況都是PL/pgSQL分析器期望看到的東西。 4個單引號 如果你在函數體中的字符串里面需要一個單引號,比如: ``` a_output := a_output || '' AND name LIKE ''''foobar'''' AND xyz'' ``` `a_output`的值將是 `AND name LIKE 'foobar' AND xyz`。 使用美元符界定的方法應該這樣寫: ``` a_output := a_output || $$ AND name LIKE 'foobar' AND xyz$$ ``` 注意,這樣的美元符界定的分隔符并不是只有`$$`。 6個單引號 如果一個在函數體中的字符串內的單引號與該字符串常量結尾前后相連,比如: ``` a_output := a_output || '' AND name LIKE ''''foobar'''''' ``` `a_output`的值將是 `AND name LIKE 'foobar'`。 用美元符界定的方法則為是: ``` a_output := a_output || $$ AND name LIKE 'foobar'$$ ``` 10個單引號 如果你想要在字符串常量里有兩個單引號(它們在一起是8個了) , 并且這兩個單引號和該字符串常量的結尾相連(又加2個)。 可能只有在寫一個生成其它函數的函數的時候, 像[Example 40-9](#calibre_link-1579)里那樣。比如: ``` a_output := a_output || '' if v_'' || referrer_keys.kind || '' like '''''''''' || referrer_keys.key_string || '''''''''' then return '''''' || referrer_keys.referrer_type || ''''''; end if;''; ``` `a_output`的值將是: ``` if v_... like ''...'' then return ''...''; end if; ``` 使用美元符界定的方法應該這樣寫: ``` a_output := a_output || $$ if v_$$ || referrer_keys.kind || $$ like '$$ || referrer_keys.key_string || $$' then return '$$ || referrer_keys.referrer_type || $$'; end if;$$; ``` 假設我們只需要在`a_output`里放單引號,因為在使用前它會被重新引號包圍。
                  <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>

                              哎呀哎呀视频在线观看