2014-10-09 111 views
0

我有一个表中Postgres的,看起来像这样:分配变量

id score 
1 23 
2 4 
3 42 
4 21 

在正常的SQL我可以声明一个变量并赋予其基于select语句的结果的值:

declare @this_score int; 
select @this_score = score from scores where id = 3; 
print @test_int; 

这输出42.是否可以在postgres中以这种方式分配变量?

+1

可能重复http://stackoverflow.com/questions/766657/how-do-you-use-variables-in-a-simple -postgresql-script) – raina77ow 2014-10-09 21:49:33

+0

@ raina77ow我不认为它是重复的,这个问题不是关于分配变量,而是将它用作过滤器。我想实际设置变量。 – Mike 2014-10-09 21:50:28

+1

通过“正常SQL”,您似乎意味着Transact-SQL(MS SQL Server,Sybase)或MySQL(我不确定哪一个)。标准SQL本身没有变量的概念,PostgreSQL在函数之外没有脚本功能(或者相当有限的'DO'语法)。 – IMSoP 2014-10-09 23:23:32

回答

3

PostgreSQL的SQL方言未使用脚本功能进行扩展;相反,它期望你使用PL/PgSQL。在这方面,它比Oracle的T-SQL或MySQL更像Oracle。

使用DO块运行PL/PgSQL,或者如果需要返回值,则创建并运行函数。

例如

DO 
$$ 
DECLARE 
    this_score int; 
BEGIN 
    SELECT score FROM scores WHERE id = 3 INTO this_score; 
    RAISE NOTICE 'this_score is: %', this_score; 
END; 
$$; 
的[你如何使用一个简单的PostgreSQL脚本变量?](