Обсуждение: How can I use parameters in plain sql

Поиск
Список
Период
Сортировка

How can I use parameters in plain sql

От
John Adams
Дата:
How can I use parameters in plain sql like sql server.

FICTIONAL example that works for sql server:
declare @i int;
set @i = 1;
select * from mytable where id=@i;


Re: How can I use parameters in plain sql

От
Merlin Moncure
Дата:
On Fri, Sep 3, 2010 at 2:45 PM, John Adams <john_adams_mail@yahoo.com> wrote:
> How can I use parameters in plain sql like sql server.
>
> FICTIONAL example that works for sql server:
> declare @i int;
> set @i = 1;
> select * from mytable where id=@i;

postgresql doesn't support variables in plain sql.  psql has some
client side manged variables, and you can of course use pl/pgsql.

merlin

Re: How can I use parameters in plain sql

От
Merlin Moncure
Дата:
On Fri, Sep 3, 2010 at 3:47 PM, John Adams <john_adams_mail@yahoo.com> wrote:
>> psql has some client side manged variables, and you can of course use
>> pl/pgsql.
> Do you mean I should use a pl/pgsql stored procedure or do I have to somehow
> mark the sql as pl/pgsql? How?
> Because in sql server it is all the same i.e. plain sql=tsql

pl/pgsql is only used in functions:

create function foo(i int) returns setof mytable as
$$
begin
  return query select * from mytable where id = i;
end;
$$ language plpgsql;

then


plpgsql is reserved for fancy things that are tricky to do with plain
sql.  it's got loops, robust error handling, etc.

http://www.postgresql.org/docs/8.4/static/plpgsql.html

merlin

Re: How can I use parameters in plain sql

От
Cédric Villemain
Дата:
2010/9/3 Merlin Moncure <mmoncure@gmail.com>:
> On Fri, Sep 3, 2010 at 3:47 PM, John Adams <john_adams_mail@yahoo.com> wrote:
>>> psql has some client side manged variables, and you can of course use
>>> pl/pgsql.
>> Do you mean I should use a pl/pgsql stored procedure or do I have to somehow
>> mark the sql as pl/pgsql? How?
>> Because in sql server it is all the same i.e. plain sql=tsql
>
> pl/pgsql is only used in functions:
>
> create function foo(i int) returns setof mytable as
> $$
> begin
>  return query select * from mytable where id = i;
> end;
> $$ language plpgsql;
>
> then
>
>
> plpgsql is reserved for fancy things that are tricky to do with plain
> sql.  it's got loops, robust error handling, etc.
>
> http://www.postgresql.org/docs/8.4/static/plpgsql.html
>

Also, in PostgreSQL 9.0 you can have anonymous code blocks with 'DO'.
http://www.postgresql.org/docs/9.0/static/sql-do.html

--
Cédric Villemain               2ndQuadrant
http://2ndQuadrant.fr/     PostgreSQL : Expertise, Formation et Support