Thread: how many quotes?

how many quotes?

From
Franco Bruno Borghesi
Date:
I need a function to fetch the nextval of a sequence (it should do other things, but my problem is the nextval() call), like this:

CREATE OR REPLACE FUNCTION test() RETURNS INTEGER AS '
DECLARE
   val INTEGER;
BEGIN
   val:=SELECT nextval(''''''''''usuarios_seq'''''''''');
  
   --do other things
END;
' LANGUAGE 'plpgsql';

SELECT test();
ERROR:  syntax error at or near "SELECT" at character 8
CONTEXT:  PL/pgSQL function "test" line 4 at assignment

I can't figure out how many quotes I should use to call nextval. I've read an article at the techdocs about this, but didn't help me. If anyone knows the *magic* number, please tell me :)

thanks in advance.


Attachment

Re: how many quotes?

From
Richard Huxton
Date:
On Tuesday 02 December 2003 16:12, Franco Bruno Borghesi wrote:
> I need a function to fetch the nextval of a sequence (it should do other
> things, but my problem is the nextval() call), like this:
>
> CREATE OR REPLACE FUNCTION test() RETURNS INTEGER AS '
> DECLARE
>    val INTEGER;
> BEGIN
>    val:=SELECT nextval(''''''''''usuarios_seq'''''''''');

> I can't figure out how many quotes I should use to call nextval. I've
> read an article at the techdocs about this, but didn't help me. If
> anyone knows the *magic* number, please tell me :)

Two, or escape them:
  nextval(''usuarios_seq'')
or
  nextval(\'usuarios_seq\')

--
  Richard Huxton
  Archonet Ltd

Re: how many quotes?

From
Franco Bruno Borghesi
Date:
I've found the problem, its not about the quotes, it's the way the assignment is made:
val:=SELECT nextval(\'usuarios_seq\'); <-WRONG
val:=nextval(\'usuarios_seq\'); <-RIGHT

SELECT INTO should work too.

Thanks everyone.

On Tue, 2003-12-02 at 14:12, Richard Huxton wrote:
On Tuesday 02 December 2003 16:12, Franco Bruno Borghesi wrote:
> I need a function to fetch the nextval of a sequence (it should do other
> things, but my problem is the nextval() call), like this:
>
> CREATE OR REPLACE FUNCTION test() RETURNS INTEGER AS '
> DECLARE
>    val INTEGER;
> BEGIN
>    val:=SELECT nextval(''''''''''usuarios_seq'''''''''');

> I can't figure out how many quotes I should use to call nextval. I've
> read an article at the techdocs about this, but didn't help me. If
> anyone knows the *magic* number, please tell me :)

Two, or escape them: nextval(''usuarios_seq'')
or nextval(\'usuarios_seq\')
Attachment