Обсуждение: create function problem
I want to index my table using the year of the date. So I create the
following function.
create function to_year(date) returns varchar as '
declare
str varchar;
begin
str := to_char($1, "YYYY");
return str;
end;
' language 'plpgsql' with (iscachable, isstrict);
But I face the problem as follow
select to_year(current_date);
WARNING: Error occurred while executing PL/pgSQL functions to_year
WARNING: line 4 at assignment
ERROR: Attribute "YYYY" not found
Anybody can help? Thanks.
_________________________________________________________________
Linguaphone : Learning English? Get Japanese lessons for FREE
http://go.msnserver.com/HK/30476.asp
On Tue, 16 Mar 2004, Thomas Leung wrote:
> I want to index my table using the year of the date. So I create the
> following function.
>
> create function to_year(date) returns varchar as '
> declare
> str varchar;
> begin
> str := to_char($1, "YYYY");
> return str;
> end;
> ' language 'plpgsql' with (iscachable, isstrict);
>
> But I face the problem as follow
> select to_year(current_date);
> WARNING: Error occurred while executing PL/pgSQL functions to_year
> WARNING: line 4 at assignment
> ERROR: Attribute "YYYY" not found
>
> Anybody can help? Thanks.
I think you're going towant doubled single quotes (''YYYY'') not double
quotes.
"Thomas Leung" <thomasleung@hotmail.com> writes:
> str := to_char($1, "YYYY");
> ERROR: Attribute "YYYY" not found
Double and single quotes are not interchangeable. Here you have written
an identifier, not a string literal. You'll need
str := to_char($1, ''YYYY'');
or
str := to_char($1, \'YYYY\');
according to taste.
regards, tom lane