Execute sybase-sql queries and see the result in a split window
From Vim Tips Wiki
created July 8, 2005 · complexity intermediate · author Maxim Kim · version 6.0
I was killed by Sybase's query tool - SQL Advantage. It's editor is so awful that I can't use it at all.
So I decided to engage Vim and sybase database. (I think in that manner you can use Oracle or MS SQL-Server).
First of all, you have to have isql properly set up. And here is my "magic" key bind:
au FileType sql map <F12> <C-W><C-O>:silent w !isql -SYourServerName -DYourDatabaseName -UYourUserName -PYourPassword > tmpsqlresult.txt<CR>:split tmpsqlresult.txt<CR>
It closes windows other than your sql one. Then send current buffer to stdin of isql, which direct its output to a file, which we split then.
Do not forget to provide your own server settings.
If you want split window to appear below your sql window add
set splitbelow
to your vimrc.
[edit] Comments
If you don't want to use tmpsqlresult.txt file then try this
au FileType sql map <F12> :let fname = tempname()<CR><C-W><C-O>:silent exe "w !isql -SYourServerName -DYourDatabaseName -UYourUserName -PYourPassword > ". fname<CR>:exe "split " . fname<CR>
It uses temporary files. They will be automatically deleted after quiting Vim.
This allows to execute only selected statements:
au FileType sql map <C-F12> <Esc>:let fname = tempname()<CR><C-W><C-O>:silent exe "'<,'>w !isql -SYourServerName -DYourDatabaseName -UYourUserName -PYourPassword > ". fname<CR>:exe "split " . fname<CR>
Mapped to Ctrl-F12.
And if you want reduce the length of the macro and let Vim clean up the temporary file for you, use
:new<CR>:silent 0r !isql -SYourServerName -DYourDatabaseName -UYourUserName -PYourPassword<CR>
A better solution is to use the excellent dbext script script#356.
Not only does it allow you to execute arbitrary sql, it has lots of helper functions such as lists of all the objects in the syste.