[Info-ingres] Was I wrong to expect this to work?
Roy Hann
specially at processed.almost.meat
Fri Aug 5 08:11:12 UTC 2022
G Jones wrote:
> On Thursday, August 4, 2022 at 4:24:50 PM UTC+1, Roy Hann wrote:
>> * create sequence genno as integer;
>> * create procedure next_vno result row (integer)
>> * as declare vno integer not null;
>> * begin
>> * select genno.nextval * 10 + generate_digit('LUHN_A',genno.currval) into :vno;
>> * return row (:vno);
>> * end
>> * \g
>> Executing . . .
>>
>> continue
>> * select * from next_vno() \g
>> Executing . . .
>>
>> E_LQ003A Cannot start up 'select' query.
>> Unexpected initial protocol response.
>>
>> Roy
>
>
> I get E_SC0206, but splitting the query up slightly persuades it to produce a result:
>
> create procedure next_vno result row (integer) as
> declare v1 integer not null;
> v2 integer not null;
> v3 integer not null;
> begin
> select genno.nextval, genno.currval into :v1,:v2;
> select :v1 * 10 + generate_digit('LUHN_A',:v2) into :v3;
> return row(:v3);
> end;
>
> (Using 11.1 +p15773).
Thanks Geraint.
I did roughly the same thing so currval wasn't needed at all. But your
way confirms currval is not the source of the problem.
Incidentally I had previously tried using a view, on the basis that
any query can be a view. It turns out querying a sequence in a view is
explicitly disallowed.
I cannot think what the justification would be. It's an annoying
exceptional case. But hey-ho; it's SQL. :-P
Roy
More information about the Info-ingres
mailing list