PostgreSQL中select into用法总结

PostgreSQL中select into用法总结
在普通的sql中,postgresql支持seelct......into......

但是动态调用时候不支持select......into......

比如:

create or replace FUNCTION test () RETURNS void AS
$body$
DECLARE
toalnum int;
BEGIN
execute 'select sum(colname) into totalnum';
return;
END;
$body$
LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;

以上情况会报错。。。。。

因该修改为如下

create or replace FUNCTION test () RETURNS void AS
$body$
DECLARE
toalnum int;
BEGIN
execute 'select sum(colname)' into  totalnum;
return;
END;
$body$
LANGUAGE 'plpgsql' VOLATILE CALLED ON NULL INPUT SECURITY INVOKER;


 

### PostgreSQL `CREATE TEMP TABLE` 使用方法 在 PostgreSQL 中,可以使用 `CREATE TEMPORARY TABLE` 或其简写形式 `CREATE TEMP TABLE` 来创建临时表[^1]。 #### 创建基本临时表 下面是一个简单的例子来展示如何创建一个名为 `temp_table_example` 的临时表: ```sql CREATE TEMP TABLE temp_table_example ( id SERIAL PRIMARY KEY, name VARCHAR(50), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); ``` 此命令会创建一个具有三个字段的临时表:`id`, `name`, 和 `created_at`。其中 `id` 是自增主键,而 `created_at` 默认设置为当前时间戳。 #### 控制事务提交后的行为 还可以指定当事务结束时对临时表的行为,通过 `ON COMMIT` 子句实现不同选项: - **PRESERVE ROWS**: 不采取任何行动,默认情况下保留所有数据。 - **DELETE ROWS**: 删除所有的行但是保持表结构存在。 - **DROP**: 完全移除该表格及其内容。 例如,在每次事务结束后自动删除记录但不销毁表本身的情况下可如下定义: ```sql CREATE TEMP TABLE temp_transactional_data( transaction_id INT NOT NULL, amount NUMERIC(10,2) ) ON COMMIT DELETE ROWS; ``` 这将确保每当涉及这个特定临时表的操作完成后,它里面的数据会被清空而不影响其他部分的工作流程。 #### 结合 `generate_series()` 函数填充测试数据 为了快速生成一些用于调试或演示目的的数据集,可以利用内置函数如 `generate_series()` 向新建立好的临时表里插入多条记录。这里给出一段 SQL 脚本片段说明这一过程: ```sql INSERT INTO temp_table_example (name) SELECT 'Item_' || gs::text FROM generate_series(1, 10) AS gs; ``` 上述脚本将会向刚刚创建的那个临时表中加入十个名称分别为 "Item_1", ..., "Item_10" 的项目实例[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值