[20211224]vim外掛格式化sql語句.txt

lfree發表於2021-12-27

[20211224]vim外掛格式化sql語句.txt

--//最近一段時間做最佳化sql語句工作,發現開發寫的sql超級變態,很長的sql語句不帶換行的,導致我抽取要除錯的sql語句在sqlplus下無
--//法執行.報如下錯誤:
SCOTT@book> @ b1.txt
Input truncated to 7499 characters
SP2-0027: Input is too long (> 2499 characters) - line ignored
SP2-0734: unknown command beginning "sdasd asda..." - rest of line ignored.

--//需要一個格式化sql語句的工具.vim下有一個外掛支援格式化sql語句,我以前僅僅在windows下使用,從來沒有在linux下的vim使用,安
--//裝並做一個記錄.

--//安裝步驟:
1.ALign 外掛:

--//

安裝很簡單:
vim Align.vba.gz
:so %
:q

--//注意要刪除舊的AlignMaps.vim檔案,不要map會衝突!新的改名為AlignMapsPlugin.vim。
--//在linux下安裝出現一個奇怪問題,裡面解壓的檔案變成。
# ls -l Align*
-rw-r--r-- 1 root root 21574 2021-12-27 09:14:07 AlignMapsPlugin.vim
-rw-r--r-- 1 root root  1957 2021-12-27 09:14:07 AlignPlugin.vim?[[[1

--//改名刪除後面的怪字元。
--//根據喜好設定如下:
let g:sqlutil_keyword_case = '\U'
let g:sqlutil_align_comma = 1

--//我發現這個在linux下sqlutil_align_comma = 1不起作用,也許版本升級造成的問題。

2.SQLUtilities 外掛
--//SQL utilities - Formatting, generate - columns lists, procedures for databases

--//

install details
Put <SQLUtilities.vim> into your .vim/plugin or vimfiles/plugin directory.
Put <SQLUtilities.vim> into your .vim/autoload or vimfiles/autoload directory.
Put <SQLUtilities.txt> into your .vim/doc or vimfiles/doc directory, run :helptags $VIM/vimfiles/doc.

3.另外談談sql語句格式化問題.

--//我不知道PB裡面的sql語句如何寫。在toad裡面有一個方法可以把編碼轉換成對應程式程式碼的格式,以delphi為例說明:
toad options-> Editor -> Code Assist -> Make Code,選擇delphi,儲存,實際上可以自己編輯模板。

{ Delphi Language Template }

%SqlVar% := '%SqlText% ' +
       '%SqlTextNext% ' +
;

--//Quote Character 定義為',Escape Character 定義為'.
--//在編輯器裡面copy and paste語句:
SELECT deptno,dname,loc,emp.deptno,sal,job
  FROM detp,emp
 WHERE dept.deptno = emp.deptno;

--//按ctrl+m ,也許就從選單選擇editor->Make code statement.這樣delphi statement 複製到模板。在ctrl+v paste出就ok了。

SQL := 'SELECT deptno,dname,loc,emp.deptno,sal,job ' +
       '  FROM detp,emp ' +
       ' WHERE dept.deptno = emp.deptno; ' ;

--//按ctrl+p , 反向操作editor->strip code statement.就變成
SELECT deptno,dname,loc,emp.deptno,sal,job
  FROM detp,emp
 WHERE dept.deptno = emp.deptno;

--//PB我不熟悉,我上網看了一下動態語句使用如下,很容易自己寫一個模板。

 如 : String mysql = " CREATE TABLE Employee" &
                      + "( employee_id integer not null, " &
                      ……
                      + "emp_lname char(20) not null ) "

EXECUTE IMMEDIATE mysql ; // 執行 DDL 建立了 table

--//很容易寫出要求的模板:
%SqlVar% = "%SqlText% " &
       + "%SqlTextNext% "  &

--//sql語句格式化在toad下:
SELECT deptno
      ,dname
      ,loc
      ,emp.deptno
      ,sal
      ,job
  FROM detp, emp
 WHERE dept.deptno = emp.deptno;

--//ctrl+M,ctrl+v如下:
SQL = "SELECT deptno " &
       + "      ,dname "  &
       + "      ,loc "  &
       + "      ,emp.deptno "  &
       + "      ,sal "  &
       + "      ,job "  &
       + "  FROM detp, emp "  &
       + " WHERE dept.deptno = emp.deptno; "  &

--//刪除分號以及尾部的&就ok了。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2849570/,如需轉載,請註明出處,否則將追究法律責任。

相關文章