类似 a=2 ; evaluate('5-a') ; 如果将这个值赋值给这个变量呢? result = evaluate('5-a') ;
PostgreSQL支持DO来执行匿名块, 实现类似上述的功能如下 :
postgres=# do
$$
postgres$# declare
postgres$# a int;
postgres$# result int;
postgres$# begin
postgres$# a := 2;
postgres$# result := 5-a;
postgres$# raise notice '%', result;
postgres$# end
postgres$#
$$
postgres-# ;
NOTICE: 3
DO
另外, 通过PostgreSQL的客户端psql定义的变量也可以实现 :
设置变量和它的值
postgres=# \set a 2
postgres=# \set result 5-:a
输出变量的值
postgres=# select :result;
?column?
----------
3
(1 row)
输出变量的值
postgres=# \echo :a
2
postgres=# \echo :result
5-:a
输出当前psql下的所有变量
postgres=# \set
AUTOCOMMIT = 'on'
PROMPT1 = '%/%R%# '
PROMPT2 = '%/%R%# '
PROMPT3 = '>> '
VERBOSITY = 'default'
VERSION = 'PostgreSQL 9.1.2 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-51), 64-bit'
DBNAME = 'postgres'
USER = 'postgres'
HOST = '127.0.0.1'
PORT = '1931'
ENCODING = 'UTF8'
LASTOID = '0'
a = '2'
result = '5-:a'
删除变量
\unset a
\unset result
可以参考man psql
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。