Как из программы на VFP организовать запуск sql-скриптов? | |
---|---|
seg856 Автор Сообщений: 272 Дата регистрации: 23.09.2010 |
Как из программы на VFP организовать запуск sql-скриптов для серверов mysql, MS SQL Server?
Это нужно для обновления БД: создание, изменение таблиц, добавление каких-то данных и т.д. Например, в файле с расширением .sql находятся sql-инструкции. Я выбираю этот файл, и все инструкции применяются на сервере mysql или MS SQL Server. Причем не по очереди, а как в среде для работы с БД: может там инструкции для создания хранимой процедуры или несколько SQL-запросов одной транзакцией. Как это примерно сделать? |
Re: Как из программы на VFP организовать запуск sql-скриптов? | |
---|---|
PaulWist Сообщений: 14618 Дата регистрации: 01.04.2004 |
------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: Как из программы на VFP организовать запуск sql-скриптов? | |
---|---|
seg856 Автор Сообщений: 272 Дата регистрации: 23.09.2010 |
Но sqlexec() выполняет по одному запросу.
А чтобы создать хранимую процедуру, нужно выполнять ее целиком |
Re: Как из программы на VFP организовать запуск sql-скриптов? | |
---|---|
ssa Сообщений: 13007 Откуда: Москва Дата регистрации: 23.03.2005 |
Плюньте в лицо тому кто вам сказал такую чушь. Цитата:Нужно выполнить не процедуру, а пакет создания процедуры. Вот весь пакет и передайте SqlExec на выполнение. Пакет - в терминах MS SQL это все между двумя соседними go. ------------------ Лень - это неосознанная мудрость. |
Re: Как из программы на VFP организовать запуск sql-скриптов? | |
---|---|
pasha_usue Сообщений: 3649 Откуда: Е-бург Дата регистрации: 06.10.2006 |
SQLEXEC ничего не выполняет. Он передаёт на сервер текст запроса, а затем получает ответ. А вот ваш текст запроса уже может содержать то что вам удобно. Единственная проблема возникает с MySQL, у которого ODBC-драйвер не даёт выполнить пакет запросов. Но тоже не проблема: SQLEXEC("BEGIN TRANSACTION;") SQLEXEC("...") SQLEXEC("COMMIT TRANSACTION;") Ps. Соединение только не рвите между SQLEXEC. Исправлено 1 раз(а). Последнее : pasha_usue, 13.01.17 12:31 |
Re: Как из программы на VFP организовать запуск sql-скриптов? | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Нужно писать парсер для sql файла - при том под каждый сервер он будет СВОЙ. Для MSSQL по идее достаточно ловить команды GO и выполнять в одном SQLEXEC всё что между ними прописано, для других - по другому. Для MySQL, видимо, нужно вычленять из текста каждую SQL команду по отдельности...
Плюс к тому в sql файле могут быть помимо собственно "команд" передаваемых серверу, ещё и специальные инструкции/настройки для штатной утилиты исполнения скриптов того либо иного сервера. Например для Oracle там целый набор set команд и ещё с десяток других. Т.е. в общем случае вряд-ли ты сможешь полноценно сэмулировать исполнение sql скрипта - поэтому лучше собственно через штатную утилиту сервера и выполнять эти самые скрипты. Ну или же делать для подобных целей свои собственные, упрощённые скрипты - чтобы твой парсер их корректно смог разобрать и исполнить. Может быть даже в dbf или XML прописывать отдельные команды - чтобы проще фоксу было их отделять друг от друга. P.S. Обновлять схему БД изнутри ОБЫЧНОГО пользовательского приложения - очень, нет, ОЧЕНЬ плохая идея. А если писать своё "административное" приложение, то вполне можно из него вызывать штатные утилиты sqlcmd и им подобные... ------------------ WBR, Igor |
© 2000-2024 Fox Club  |