2014-12-05 62 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”

它的工作原理!

相关问题