2014-10-09 137 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腳本變量?](