Subject Re: [IBO] SP????
Author Alexander Khvastunov
> Now I get :-
>
> 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 ); <-----------!!!!!!!!!!!!!!!!!

You forgot about the semicolon here.

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