[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 插件:
http://www.vim.org/scripts/script.php?script_id=294
--//https://www.vim.org/scripts/download_script.php?src_id=19633
安装很简单:
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
http://vim.sourceforge.net/scripts/script.php?script_id=492
--//https://vim.sourceforge.io/scripts/download_script.php?src_id=19113
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博客 ” ,链接:https://blog.itpub.net/267265/viewspace-2849570/ ,如需转载,请注明出处,否则将追究法律责任。