In SQL the semicolon is only specified at the end of the statement.
And the compound statement is:
Begin ...
End;
This is the routine body (of a running test stored procedure):
Begin -- Begin without semi colon!!!
Declare NbrRows Integer Default 0;
select 1 Into NbrRows
From InventCum
Limit 1;
If NbrRows <> 0 -- No semicolon here!!!
Then Delete from InventCum;
End If;
Insert Into InventCum
Select ItemNo, Sum(Quantity), Current_Timestamp, Session_User
From InventoryX
Group By ItemNo;
End;
The first statement is not before the end of the first statement after
Begin.
Mit freundlichen Grüßen / Best regards
Birgitta Hauser
"Shoot for the moon, even if you miss, you'll land among the stars." (Les
Brown)
"If you think education is expensive, try ignorance." (Derek Bok)
"What is worse than training your staff and losing them? Not training them
and keeping them!"
?Train people well enough so they can leave, treat them well enough so they
don't want to.? (Richard Branson)
-----Ursprüngliche Nachricht-----
Von: MIDRANGE-L [mailto:midrange-l-bounces@xxxxxxxxxxxxxxxxxx] Im Auftrag
von Jack Woehr via MIDRANGE-L
Gesendet: Tuesday, 07.2 2023 17:46
An: Midrange Systems Technical Discussion
Cc: Jack Woehr
Betreff: Re: Why did Stored Procedure execute?
Didin't the semicolon after the CREATE PROCEDURE end the CREATE?
And then the BEGIN stands there all alone and executes itself.
The CREATE PROCEDURE MYPROC should have been followed by a parentheses, not
a semicolon.
Right?!
On Tue, Feb 7, 2023 at 9:42 AM Birgitta Hauser <Hauser@xxxxxxxxxxxxxxx>
wrote:
Jack
... the (SQL) Source code in a SQL Routine (Stored Procedure, Trigger
and User defined function) is always embedded in a compound statement
(i.e.
between Begin and End) You may can refrain from the compound statement
if there is only a single statement to be executed in the routine.
As an Amazon Associate we earn from qualifying purchases.