Subject | Re: [IBO] SP???? |
---|---|
Author | Alexander Khvastunov |
Post date | 2002-01-16T13:46:30Z |
> Now I get :-You forgot about the semicolon here.
>
> Dynamic SQL Error
> SQL error code = -104
> Unexpected end of command
> When running the following script:-
>
> COMMIT WORK;
> SET AUTODDL OFF;
> SET TERM ^ ;
>
> CREATE PROCEDURE INSERT_BEN AS BEGIN EXIT; END ^
>
> SET TERM ; ^
> ALTER PROCEDURE INSERT_BEN ( BENEF_ID VARCHAR(15)
> ,BEN_INITIALS VARCHAR(5)
> ,BEN_FIRSTNAME VARCHAR(30)
> ,BEN_SURNAME VARCHAR(30)
> ,BEN_TITLEID SMALLINT)
>
> RETURNS (BEN_ID INTEGER)
> AS
> Declare Variable bencount integer;
> BEGIN
> IF (BENEF_ID <> '') THEN
> BEGIN
>
> SELECT count(BENID)
> FROM BENEFICIARY
> WHERE (ID = :BENEF_ID)
> into :bencount;
>
> IF ( BenCount >= 1 ) THEN
> BEN_ID = GEN_ID( BENID_GEN, 1 ); <-----------!!!!!!!!!!!!!!!!!
Anyway your procedure looks some wrong...
Use EXISTS instead of counting records:
ALTER PROCEDURE INSERT_BEN ( BENEF_ID VARCHAR(15)
,BEN_INITIALS VARCHAR(5)
,BEN_FIRSTNAME VARCHAR(30)
,BEN_SURNAME VARCHAR(30)
,BEN_TITLEID SMALLINT)
RETURNS (BEN_ID INTEGER)
AS
BEGIN
IF (BENEF_ID <> '') THEN
BEGIN
If (not (exists (select benid from beneficiary where id = :benef_id))) Then
begin
BEN_ID = GEN_ID( BENID_GEN, 1 );
INSERT INTO BENEFICIARY ( BENID
, ID
, INITIALS
, SURNAME
, FIRSTNAME
, TITLEID)
VALUES ( :BEN_ID
, :BENEF_ID
, :BEN_INITIALS
, :BEN_SURNAME
, :BEN_FIRSTNAME
, :BEN_TITLEID);
end
END
END
Best regards,
Alexander Khvastunov
IBExpert - The Most Expert for InterBase and FireBird
http://www.ibexpert.com