Обсуждение: Stored procedure doesn't return expected result.
I'm writing a script to clean up some data in a table, the data I'm
using as the source is held in emails, so I've written a perl script
to extract the info. Unfortunatly this email doesn't contain the
client id, so I've written a stored procedure to extract it.
create or replace function get_client_id(text) returns integer as $$
SELECT intclientid FROM client WHERE vchname = '$1';
$$ LANGUAGE SQL;
However, when I do this:
select get_client_id('Stuart Grimshaw');
I get no results, yet:
SELECT intclientid FROM client WHERE vchname = 'Stuart Grimshaw';
Gives me the result I would expect:
intclientid
-------------
3
What am I doing wrong in the stored procedure?
--
-S
http://www.makepovertyhistory.org/
Stuart Grimshaw <stuart.grimshaw@gmail.com> schrieb:
> I'm writing a script to clean up some data in a table, the data I'm
> using as the source is held in emails, so I've written a perl script
> to extract the info. Unfortunatly this email doesn't contain the
> client id, so I've written a stored procedure to extract it.
>
> create or replace function get_client_id(text) returns integer as $$
> SELECT intclientid FROM client WHERE vchname = '$1';
> $$ LANGUAGE SQL;
>
> However, when I do this:
>
> select get_client_id('Stuart Grimshaw');
>
> I get no results, yet:
Please read our documentation about executing dynamic commands:
http://www.postgresql.org/docs/8.1/interactive/plpgsql-statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN
HTH, Andreas
--
Really, I'm not out to destroy Microsoft. That will just be a completely
unintentional side effect. (Linus Torvalds)
"If I was god, I would recompile penguin with --enable-fly." (unknow)
Kaufbach, Saxony, Germany, Europe. N 51.05082°, E 13.56889°
Stuart Grimshaw <stuart.grimshaw@gmail.com> schrieb:
> I'm writing a script to clean up some data in a table, the data I'm
> using as the source is held in emails, so I've written a perl script
> to extract the info. Unfortunatly this email doesn't contain the
> client id, so I've written a stored procedure to extract it.
>
> create or replace function get_client_id(text) returns integer as $$
> SELECT intclientid FROM client WHERE vchname = '$1';
^ ^
remove the '
test=# select * from foo1;
x | i
---+---
a | 1
b | 2
(2 rows)
test=# create or replace function get_i(varchar) returns int as $$
select i from foo1 where x = $1;$$ language sql;
CREATE FUNCTION
test=# select get_i('a');
get_i
-------
1
(1 row)
HTH, Andreas
--
Really, I'm not out to destroy Microsoft. That will just be a completely
unintentional side effect. (Linus Torvalds)
"If I was god, I would recompile penguin with --enable-fly." (unknow)
Kaufbach, Saxony, Germany, Europe. N 51.05082°, E 13.56889°
On 2/26/06, Andreas Kretschmer <akretschmer@spamfence.net> wrote:
> Stuart Grimshaw <stuart.grimshaw@gmail.com> schrieb:
>
> > I'm writing a script to clean up some data in a table, the data I'm
> > using as the source is held in emails, so I've written a perl script
> > to extract the info. Unfortunatly this email doesn't contain the
> > client id, so I've written a stored procedure to extract it.
> >
> > create or replace function get_client_id(text) returns integer as $$
> > SELECT intclientid FROM client WHERE vchname = '$1';
> ^ ^
>
> remove the '
>
> test=# select * from foo1;
> x | i
> ---+---
> a | 1
> b | 2
> (2 rows)
>
> test=# create or replace function get_i(varchar) returns int as $$
> select i from foo1 where x = $1;$$ language sql;
> CREATE FUNCTION
> test=# select get_i('a');
> get_i
> -------
> 1
> (1 row)
That's got it. Obviously it understands that $1 is a string and not a
column name.
Thanks very much.
--
-S
http://www.makepovertyhistory.org/