Often I wish to do the reverse of what you are asking. For example if the user has customized a procedure, and I don’t want to lose their changes, yet I want to apply a uniform update script for all my clients, I’d like to be able to do something like the following:
if not exists ( select * from sys.objects
where name='myProc' and objectproperty(object_id,'IsProcedure')=1 )
create proc myProc
as begin
-- proc stmts here
end
go
This logic would allow me to create something only if it DOESN’T exist, but to my great frustration, SQL Server prevents this too.
I get around this problem easily enough as follows:
if not exists ( select * from sys.objects
where name='myProc' and objectproperty(object_id,'IsProcedure')=1 )
exec('create proc myProc
as begin
-- proc stmts here
declare @object int = 0
end')
go
By passing the create proc command as a string and placing it in an exec statement we circumvent the stupid rule that prevents one from doing this in the first place.
- Remove From My Forums
-
Question
-
Hi,
we have below scripts for SQL server
1) base.sql — create tables
2) procedures.sql
3) triggers.sql
4) scheduler.sqlin upgrade flow, procedures.sql is throwing below exception even though we are executing procedures in a separate script and batches with GO
oUpgrade Failed, due:
org.flywaydb.core.internal.dbsupport.FlywaySqlScriptException:
Migration V1_0_0_0_1__procedures.sql failed
——————————————-
SQL State : HY000
Error Code : 111
Message : [FMWGEN][SQLServer JDBC Driver][SQLServer]’CREATE/ALTER
PROCEDURE’ must be the first statement in a query batch.create or alter procedure proc-1
AS BEGIN
——
END
GO
create or alter procedure proc-2
AS BEGIN
——
END
GO
create or alter procedure proc-3
AS BEGIN
——
END
GOplease advise if we are missing any
I am trying to execute SQL Script
file in my bin
folder with code from Visual Studio, before now it was working fine when I was using SQL Server 2012
, I recently installed SQL server 2019
and I created the script using SQL Server 2019
, when the application tries to execute the script I get the error
create/alter procedure must be the first statement in the query batch
I went to a friend who has SQL Server 2012
and created the script with his computer, it worked but when I create it with newer version I get the error, this is my code to read the script file :
public static string ReadDBFile(string path)
{
string str;
StreamReader reader = new StreamReader(path);
str = reader.ReadToEnd();
str = str.Replace("GO", "");
reader.Close();
return str;
}
Here is where am executing the script file :
cmd.CommandText = ReadDBFile(Application.StartupPath + "/scriptfile.sql");
cmd.ExecuteNonQuery();
I am sure this has to do with upgrade of SQL Server
, any clue on how I could get this to work?
Dimmer 0 / 0 / 0 Регистрация: 24.01.2008 Сообщений: 9 |
||||
1 |
||||
Помогите с процедурой не пойму, что происходит31.01.2008, 21:11. Показов 3447. Ответов 6 Метки нет (Все метки)
Это процедура работает в SQL 6.5, а в SQL 7 и 2000 не работает
после запуска выдает ошипку Error 111 alter procedure must be the first statement in a query batch Помогите, что делать
0 |
Programming Эксперт 94731 / 64177 / 26122 Регистрация: 12.04.2006 Сообщений: 116,782 |
31.01.2008, 21:11 |
6 |
AiK |
|
31.01.2008, 23:32 |
2 |
Во-первых, нужно быть уверенным, что базы case unsensetive, для того, чтобы так произвольно обращаться с регистром в переменных. |
Dimmer 0 / 0 / 0 Регистрация: 24.01.2008 Сообщений: 9 |
||||
01.02.2008, 00:44 [ТС] |
3 |
|||
я так и сделал память дырявая
Но дельфовский клиент ругается на SQL и указывает на dbo.GetKod
0 |
AiK |
|
01.02.2008, 03:02 |
4 |
Слушай, не морочь людям голову. например в SQL нет creat, а есть create и есть ещё минимум одна синтаксическая ошибка |
Dimmer 0 / 0 / 0 Регистрация: 24.01.2008 Сообщений: 9 |
||||||||
01.02.2008, 22:37 [ТС] |
5 |
|||||||
Головы морочу только женщинам, а сдесь допустил несколько ошибок чтож каюсь алкоголь серьезно несовместим с грамотностью. Но вернемся к нашим баранам вот они свеже скопированные теперь вроде без ошибок и create сам на себя похож да и еще несколько ошбок исправил.
И все работает это большой комплекс.
семерка говорит, что все работает но клиет ругается и нехочет с ним работать, а добавление строк вызывает 111 ошибку. что за ерунда.
0 |
0 / 0 / 0 Регистрация: 24.01.2008 Сообщений: 9 |
|
01.02.2008, 22:41 [ТС] |
6 |
Да еще строка drop procedure dbo.GetKod естественно без ковычек.
0 |
AiK |
|
01.02.2008, 22:50 |
7 |
Ну так правильно, батчи кто разделять-то будет, Пушкин? |