postgresql - 如何初始化行数据类型变量?
问题描述
我想创建一个函数来初始化表的行数据类型并将其返回为
CREATE FUNCTION get_default_table_row_object()
RETURNS mytable AS $$
DECLARE
row mytable;
BEGIN
row.field1 := 0;
row.field2 := -1;
row.record_reg_id := 1;
row.record_upd_id := 1;
row.record_reg_date := current_timestamp;
row.record_upd_date := current_timestamp;
RETURN row;
END;
$$ LANGUAGE plpgsql;
因为我的表有很多列,我需要在几个函数中创建几十个变量。我想将上述功能用作
CREATE FUNCTION some_function() RETURNS VOID AS $$
DECLARE
i_obj1 mytable := get_default_table_row_object(); -- declare and initialize default values
BEGIN
-- function body
END;
$$ LANGUAGE plpgsql;
但这给了我错误ERROR: default value for row or record variable is not supported
。有办法弄清楚吗?
解决方案
您可以将其设置在正文中,如下所示:
CREATE FUNCTION some_function() RETURNS VOID AS $$
DECLARE
i_obj1 mytable; -- declare only
BEGIN
i_obj1 := get_default_table_row_object(); -- set default values
END;
$$ LANGUAGE plpgsql;
推荐阅读
- jupyter-notebook - 使用 Kubespawner 的笔记本“停止我的服务器”响应缓慢(5-10 秒以上)
- windows - 为什么我无法从 Actix 文档示例加载页面?
- python - 在 Python 中使用 URL 解析检测 URL 解码
- grails - 'setup()' 方法拼写错误(大写错误)@ 第 21 行,第 5 列。@Before
- flutter - 如何在 Flutter 上获取索引 ListView?
- python - Scrapy 选择器:获取元素的第 n 个子文本
- javascript - 使用 Django 更改图像源而不重新加载页面
- c - 写入数组外然后使用 realloc 后数组值错误
- angular - 可以组合的4个字符的Angular 6输入验证器?
- java - JVM 线程偶尔挂起