【问题标题】:PostgreSQL Declared Variable in FunctionPostgreSQL 在函数中声明变量
【发布时间】:2013-10-29 08:45:12
【问题描述】:

我使用 Potgresql 并编写了函数

CREATE OR REPLACE FUNCTION staging.shape_commit(layer_id integer)
  RETURNS integer AS
$BODY$
declare     
  layer_name text;

begin
layer_name:=(select shape.layer_name from staging.shape where shape.id=layer_id);
delete  from layer_name;
return layer_name;
end;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION staging.shape_commit(integer)
  OWNER TO test;

layer_name 是变量,实际上是表名。但脚本将其作为变量忽略并用作字符串

有人帮帮我吗?

【问题讨论】:

  • 你不应该返回文本吗?
  • 我只想让 Postgresql 将 layer_name 理解为变量而不是文本

标签: database function postgresql variables


【解决方案1】:

您的问题不太清楚,但我怀疑您实际上想将文本转换为表名。为此,您需要动态 SQL。而不是:

delete  from layer_name;

试试类似的东西:

execute $x$delete from $x$ || layer_name::regclass;

http://www.postgresql.org/docs/current/static/plpgsql-statements.html

【讨论】:

    猜你喜欢
    • 2016-07-12
    • 2017-04-07
    • 1970-01-01
    • 1970-01-01
    • 2011-02-09
    • 2021-08-26
    • 1970-01-01
    • 1970-01-01
    • 2011-05-12
    相关资源
    最近更新 更多