Dear Adiran,

Thanks for your help !!

First I want to say it's not giving the error for this ""
languaget...@repos.birchstreet.net", so there is any need to do the change
as suggested by you.

Second you suggested " exit with cur1; " - *You are right after putting the
semi column my code is working fine.*

There is also one query I have changed this line    "*langCursor cur1%rowtype;"
as below:*

langCursor RECORD; --cur1%rowtype;

Please read my code once again and suggest I did correct these change or
not because this is suggested by one of my friend and first I am getting
the error for this line.

I am the new one for plsql code that's why I am taking the expert advice.


Thanks
SS

On Wed, Jan 20, 2016 at 8:30 PM, Adrian Klaver <adrian.kla...@aklaver.com>
wrote:

> On 01/20/2016 06:32 AM, Sachin Srivastava wrote:
>
>> Dear Thom,
>>
>> Please find the complete code as below and suggest now.
>>
>
> I would suggest spending some time here:
>
> http://www.postgresql.org/docs/9.4/interactive/plpgsql.html
>
> in particular:
>
>
> http://www.postgresql.org/docs/9.4/interactive/plpgsql-control-structures.html#PLPGSQL-CONTROL-STRUCTURES-LOOPS
>
> and here:
>
> http://www.postgresql.org/docs/9.4/interactive/plpgsql-porting.html
>
> Comments in-line
>
>
>> ----------------------
>>
>> -- Function: gen_budget_for_next_year(bigint, bigint, bigint)
>> -- DROP FUNCTION gen_budget_for_next_year(bigint, bigint, bigint);
>> CREATE OR REPLACE FUNCTION gen_budget_for_next_year(
>>      subid bigint,
>>      compid bigint,
>>      formonth bigint)
>>    RETURNS void AS
>> $BODY$
>> DECLARE
>> --Version:
>> --2015.01 PM T15422-10- Generate budget period for coming years.
>> 05/01/2015
>> cur1 CURSOR FOR SELECT distinct(language_id) from
>> "languaget...@repos.birchstreet.net
>>
>
> Have you tried the above. I know quoting it got you pass the syntax error,
> but I am pretty sure it not going to do what it did in Oracle.
>
> <mailto:languaget...@repos.birchstreet.net>";
>> sFound bigint := 0;
>> recCount bigint :=0;
>> period varchar(100);
>> firstDate varchar(100);
>> lastDate varchar(100);
>> curMonth varchar(100);
>> langCursor RECORD; --cur1%rowtype;
>>
>> BEGIN
>>    loop
>>    open cur1;
>>    IF NOT FOUND THEN EXIT; END IF; -- apply on recCount >= forMonth;
>>          select to_char(TO_DATE(LOCALTIMESTAMP) + recCount*'1
>> month'::interval,'YYYYMM') into period  ;
>>          select to_date(period||'01','YYYYMMDD') into firstDate  ;
>>          select TO_DATE(LOCALTIMESTAMP) + recCount*'1 month'::interval
>> into lastDate  ;
>>          select to_char(TO_DATE(LOCALTIMESTAMP) + recCount*'1
>> month'::interval, 'YYYY MM MONTH') into curMonth ;
>>          recCount :=recCount+1;
>>    loop
>>    fetch cur1 into langCursor;
>>    exit when cur1
>>
>
> From loop link above, this needs to be
>
> exit when cur1;
>
>              select Count(0) into sFound  from budget_period t where
>> t.subscriber_id =subID
>>              and t.period_number = period and
>> t.language_id=langCursor.Language_Id;
>>              if(sFound = 0)then
>>                  insert into budget_period (subscriber_id, company_id,
>> period_number, period_name,
>>                  period_length_code, first_day, last_day,creation_date,
>> creation_user, update_date, update_user, language_id)
>>                  values(subID, compID, period,  curMonth,  'MONTH',
>>                  firstDate, lastDate, LOCALTIMESTAMP,
>> 'Admin',LOCALTIMESTAMP, 'Admin', langCursor.Language_Id);
>>              end if;
>>    end loop;
>>    close cur1;
>>    end loop;
>>
>> commit;
>> END;
>> $BODY$
>>    LANGUAGE plpgsql VOLATILE SECURITY DEFINER
>>    COST 100;
>> ALTER FUNCTION gen_budget_for_next_year(bigint, bigint, bigint)
>>    OWNER TO postgres;
>>
>> --------------------------------
>>
>> On Wed, Jan 20, 2016 at 6:05 PM, Thom Brown <t...@linux.com
>> <mailto:t...@linux.com>> wrote:
>>
>>     On 20 January 2016 at 12:15, Sachin Srivastava
>>     <ssr.teleat...@gmail.com <mailto:ssr.teleat...@gmail.com>> wrote:
>>      > I am unable to find out the syntax error in below code, please
>>     suggest?
>>      >
>>      >
>>      >
>>      > ERROR:  syntax error at or near "select"
>>      > LINE 44:             select Count(0) into sFound  from
>>     budget_period ...
>>      >                      ^
>>      > ********** Error **********
>>      > ERROR: syntax error at or near "select"
>>      > SQL state: 42601
>>      > Character: 1190
>>      >
>>      > Code as below:
>>      > -------------------------
>>      >
>>      > select Count(0) into sFound  from budget_period t where
>>     t.subscriber_id
>>      > =subID
>>      >             and t.period_number = period and
>>      > t.language_id=langCursor.Language_Id;
>>      >             if(sFound = 0)then
>>      >                 insert into budget_period (subscriber_id,
>> company_id,
>>      > period_number, period_name,
>>      >                 period_length_code, first_day,
>>     last_day,creation_date,
>>      > creation_user, update_date, update_user, language_id)
>>      >                 values(subID, compID, period,  curMonth,  'MONTH',
>>      >                 firstDate, lastDate, LOCALTIMESTAMP,
>>     'Admin',LOCALTIMESTAMP,
>>      > 'Admin', langCursor.Language_Id);
>>      >             end if;
>>      >
>>      > ------------------------
>>
>>     Well, it says that the problem occurs on line 44, so what's on the
>>     previous lines it's receiving?  Are you sending an unterminated query
>>     prior to that?
>>
>>     Thom
>>
>>
>>
>
> --
> Adrian Klaver
> adrian.kla...@aklaver.com
>

Reply via email to