Вызов SQL Scrips из сценария SQL! - PullRequest
0 голосов
/ 25 января 2010

Мне просто интересно, возможно ли вызвать несколько сценариев SQL из одного сценария startup.sql.

т.е.

StartUp.sql звонки:

CreateDatabase.sql CreateStoreProcedureFirst.sql CreateStoreProcedureSecond.sql InsertDummyValues.sql otherscripts.sql ... и т.д.

В данный момент я загружаю и запускаю каждый файл по одному .. Есть также несколько сценариев, которые я запускаю и иногда пропускаю сценарий или делаю это в неправильном порядке!

Надеюсь, что это имеет смысл

Спасибо

Ответы [ 5 ]

2 голосов
/ 25 января 2010

Да - вы можете использовать SQLCMD (SQL Server 2005 или более позднюю версию), чтобы сделать скрипты T-SQL немного более гибкими, с эквивалентом включений и основных переменных.

Команда SQLCMD для включения: : r как в:

:r c:\someFolder\script1.sql
:r c:\someFolder\script2.sql

и т.д.

См. http://www.mssqltips.com/tip.asp?tip=1543

1 голос
/ 25 января 2010

Нумеруйте их и используйте такой инструмент, как http://code.google.com/p/simplescriptrunner/ или http://code.google.com/p/tarantino/

0 голосов
/ 05 февраля 2010

Вы использовали или слышали о динамическом SQL? Вот как бы я это сделал ...

DECLARE @ SQL1PROCEDURE nvarchar (4000) ОБЪЯВИТЬ @ SQL2PROCEDURE nvarchar (4000)

SET @ SQL1Procedure = 'CREATE PROC sp1 КАК НАЧАТЬ бла бла бла КОНЕЦ «

SET @ SQL2Procedure = 'ВСТАВИТЬ ЗВУКОВЫЙ СТОЛ (ПОЛЯ1, ПОЛЯ2) ЗНАЧЕНИЯ (ЗНАЧЕНИЕ 1, ЗНАЧЕНИЕ 2)

EXEC @ SQL1Procedure EXEC @ SQL2Procedure

0 голосов
/ 25 января 2010

mcintyre321 ссылки выглядят удобно ...

Я использовал powershell, чтобы сделать нечто подобное. Я бы назвал все мои установочные скрипты с префиксом и 1.x в любом порядке, в котором они должны быть скомпилированы.

Затем я назвал все свои сценарии разрыва 3.x в правильном порядке.

Команда в окне cmd:

PS builddir:\> .\buildsql.ps1 -currentbuilddir "C:\Documents and Settings\SGreene\My Documents\svn\Ticketing" -buildfile "sqlbuild.sql" -teardownfile
"teardown.sql"

Сценарий powershell (buildsql.ps1)

param($currentbuilddir,$buildfile1,$teardownfile)

new-psdrive -name builddir -PSProvider filesystem -Root (resolve-path $currentbuilddir)

cd builddir:

rm $buildfile1
rm $teardownfile


Get-item COM_ENCRYPT_1* | ForEAch-object {cat $_ >> $buildfile1; "GO --SYSTEM INSERTED GO--------------" >> $buildfile1} 

Get-item COM_ENCRYPT_3* | ForEAch-object {cat $_ >> $teardownfile; "GO --SYSTEM INSERTED GO------------" >> $teardownfile} 

Я впервые так делаю, но, похоже, все в порядке.

0 голосов
/ 25 января 2010

Как в Oracle, так и в MySQL есть инструменты командной строки, и, как я знаю, вы можете запустить их таким образом

mysql database_name < yoursql.sql > output.tab

однако это означает, что запуск из CLI, а не из исходного оператора SQL, может быть не тем, что вы ищете. Я не верю, что вы можете звонить в систему из MySQL

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...