- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
是这样的:
CREATE OR REPLACE FUNCTION get(param_id integer)
RETURNS integer AS
$BODY$
BEGIN
SELECT col1 FROM TABLE WHERE id = param_id;
END;
$BODY$
LANGUAGE plpgsql;
我想为此避免DECLARE
。
最佳答案
是的,你可以。有很多方法。
返回(选择...)
CREATE OR REPLACE FUNCTION get_1(_param_id integer)
RETURNS integer
LANGUAGE plpgsql AS
$func$
BEGIN
RETURN _param_id;
-- Or:
-- RETURN (SELECT col1 FROM tbl WHERE id = _param_id);
END
$func$;
OUT
或INOUT
参数CREATE OR REPLACE FUNCTION get_2(_param_id integer, OUT _col1 integer)
-- RETURNS integer -- is optional noise in this case
LANGUAGE plpgsql AS
$func$
BEGIN
SELECT INTO _col1 col1 FROM tbl WHERE id = _param_id;
-- also valid, but discouraged:
-- _col1 := col1 FROM tbl WHERE id = _param_id;
END
$func$;
IN
参数从 Postgres 9.0 开始,您还可以使用输入参数 作为变量。 The release notes for 9.0:
An input parameter now acts like a local variable initialized to the passed-in value.
CREATE OR REPLACE FUNCTION get_3(_param_id integer)
RETURNS integer
LANGUAGE plpgsql AS
$func$
BEGIN
SELECT INTO _param_id col1 FROM tbl WHERE id = _param_id;
RETURN _param_id;
-- Also vlaid, but discouraged:
-- $1 := col1 FROM tbl WHERE id = $1;
-- RETURN $1;
END
$func$;
变体 2) 和 3) 确实使用隐式变量,但您不必(根据要求)显式地DECLARE
。
INOUT
参数的DEFAULT
值这有点特殊。函数体可以为空。
CREATE OR REPLACE FUNCTION get_4(_param_id integer, INOUT _col1 integer = 123)
RETURNS integer
LANGUAGE plpgsql AS
$func$
BEGIN
-- You can assign some (other) value to _col1:
-- SELECT INTO _col1 col1 FROM tbl WHERE id = _param_id;
-- If you don't, the DEFAULT 123 will be returned.
END
$func$;
INOUT _col1 integer = 123
是 INOUT _col1 integer DEFAULT 123
的缩写。见:
CREATE OR REPLACE FUNCTION get_5(_param_id integer)
RETURNS integer
LANGUAGE sql AS
'SELECT col1 FROM tbl WHERE id = _param_id';
或者使用参数引用 $1
而不是参数名称。
变体 5) 对函数体使用普通单引号。全部都一样。见:
db<> fiddle here - 演示所有(包括调用)
关于postgresql - 我可以让 plpgsql 函数在不使用变量的情况下返回一个整数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8169676/
我声明我对对象问题的回答是"is",在我的情况下很方便,但我在这里问专家。 我开发了很多 plpgsql 函数,只有一个是用 C 语言开发的,但我已经明白学习曲线肯定更倾斜。 在可能的情况下,我需要一
我已经用谷歌搜索了很多,并且我有相当不错的阅读理解能力,但我不明白这个脚本是否可以在我的 postgres/postgis 盒子上的多个线程中工作。这是代码: Do $do$ DECLARE
我有一个名为 test 的表,我按名为 daterange 的范围的上限对它进行排序。我想获取此排序数据的顺序并将其保存在名为 bc_order 的同一表的另一列中。 排序的顺序必须保存在bc_ord
我在 Postgres 9.5 数据库中有以下表格: 产品 Column | Type |
我正在使用 PostgreSQL。 我需要使用 PLPGSQL 语言的存储过程,它将返回表 (SET OF RECORDS),其中包含来自 my_table 的前 2 个和后 2 个结果的计数。 例如
我想在我的应用程序中实现分页。我创建了返回记录数作为输出参数和引用游标数据本身的存储过程(具有限制和偏移量)但作为结果——我得到了——“由于 OUT 参数,函数结果类型必须是 bigint” 据我所知
我在数据库后端使用 Postgres 9.3 的报告中有以下相当简单的查询: SELECT * FROM source JOIN sourcelevel USING (source_id) JOIN
我曾经在邮件列表中读过这个条目 http://archives.postgresql.org/pgsql-hackers/2005-06/msg01481.php SELECT * FROM foo_
例如。 --Assigning value to variable in function as a parameter. create or replace function f1(number i
我正在尝试将记录或 json 存储到数组中并从函数返回 JSON: CREATE OR REPLACE FUNCTION stat_per_day() RETURNS json AS $$ DECLA
我正在尝试创建选择数据、处理并返回它们的过程,但我正在努力如何为多列定义数组变量。 这个有效: CREATE OR REPLACE FUNCTION testing_array_return() RE
为了能够在一个数据库中创建应用程序的不同实例,例如测试阶段,我想使用变量作为模式名称。创建表或序列时一切正常,但我想不出一种在函数内部使用变量的优雅方法。我已经阅读了一些文章关于美元引用的字符串常量,
我有一个表“消息”。对于每个 INSERT'ed 行,我必须在同一个表“消息”(用于群发邮件)中插入该行的多个副本。我为它创建了一个触发器(例如一个副本)。 CREATE OR REPLACE FUN
我想在一个函数中以两种不同的方式查找数据,并在找到结果后立即返回。 首先我想运行一个查询; select * from company where company.id = x 然后,如果没有返回结果
我正在将 postgres 与 postgis 结合使用,并且我有一个包含几何数据的表格。现在我想在 plpgsql 中编写一个循环遍历行并将每个几何值存储在数组中的过程。 我应该使用什么返回类型来返
create function dept_count (dept_name varchar(20)) returns integer as $$ begin declare d_count integ
我刚刚开始使用 postgres 并且对整个事情都是陌生的,我正在使用 postgres 9.6 版并试图创建一个新函数但是我不断收到错误 ERROR: syntax error at or near
有没有一种方法可以加速我们的 plpgsql 函数,该函数在循环执行的一个查询中计算某些类型的文档?全部在一个查询中? validador := (select count(id_doc) from
我已经编写了以下函数,但是当我运行它时它没有返回任何内容。有人可以帮助确定问题吗? CREATE OR REPLACE FUNCTION GenerateReadableRandomString (
我有 Postgresql 8.4 我有一个用户表 user_id INT, user_name VARCHAR(255), user_email VARCHAR(255), user_salt VA
我是一名优秀的程序员,十分优秀!