簡體   English   中英

如何從命令行而不是SQL調用PL / pgSQL

[英]How invoke PL/pgSQL from command line instead of SQL

我使用Oracle編寫PL / SQL腳本,並且正在PostgreSQL中嘗試我的第一個PL / pgSQL腳本。 例如,我創建了這個test.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:錯誤:“ v_loc_nbr”或附近的語法錯誤

我認為問題是當我希望它運行PL / pgSQL時試圖執行SQL。 該命令應該是什么?

與其他過程語言一樣 ,您不能直接運行PL / pgSQL
您只能運行SQL。 使用PLPGSQL一個內部功能體或包裹在一個DO命令,其中的范圍DO ,因為它們不能返回數據的命令被限制。

請查看標記以獲取示例。

我不想對此做更多解釋,因為Erwin解釋得很好。您需要將SQL包裝在DO中 ,因此您的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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM