2014-12-05 59 views
0

我使用Oracle編寫PL/SQL腳本,我正在嘗試使用PostgreSQL創建我的第一個PL/pgSQL腳本。例如,我創建了這個test.sql文件。如何從命令行調用PL/pgSQL而不是SQL

DECLARE 
    v_loc_nbr   INTEGER; 
BEGIN 
    v_loc_nbr := 0; 
END; 

其中我嘗試使用命令行來執行:

\postgresql\9.3\bin\psql.exe -d postgres -f test.sql 

,但我得到的語法錯誤,如:

psql:test.sql:4: ERROR: syntax error at or near "v_loc_nbr"

我認爲這個問題是它試圖當我執行SQL希望它運行PL/pgSQL。該命令應該是什麼?

+0

http://www.postgresql.org/docs/current/static/sql-do.html – 2014-12-05 23:02:34

回答

0

我不想更多地解釋這一點,因爲Erwin解釋well.You需要包裝一個DO裏面你的SQL,所以你應該test.sql像這樣寫

DO 
$$ 
DECLARE 
    v_loc_nbr INTEGER; 
BEGIN 
    v_loc_nbr := 0; 
END; 
$$ 

,並嘗試執行它\postgresql\9.3\bin\psql.exe -d postgres -f test.sql

1

與其他procedural languages一樣,您不能直接運行PL/pgSQL
您只能運行SQL。在function正文中使用plpgsql或使用DO命令封裝,其中DO命令的範圍因其無法返回數據而受到限制。

查看標籤的例子。

-1

你可以這樣做:

/斌/ PSQL -d Postgres的-c 「SELECT * FROM TABLE」

一般來說,語法是:

/斌/ PSQL -h $ DBHOST -U $ DBUSER -d $ DBNAME -c 「SELECT * FROM TABLE」

它的工作原理!

相關問題