将查询输出分配给 postgres 存储过程中的变量
Assigning query output to variable in postgres stored proc
我正在尝试将 postgres 存储过程中的查询结果分配给一个变量。
这是我正在尝试的 运行:
CREATE OR Replace PROCEDURE schema.MyProcedure()
AS $$
DECLARE
RowCount int = 100;
BEGIN
select cnt into RowCount
from (
Select count(*) as cnt
From schema.MyTable
) ;
RAISE NOTICE 'RowCount: %', RowCount;
END;
$$
LANGUAGE plpgsql;
schema.MyTable 只是一些任意的 table 名称,但脚本没有显示任何内容,甚至没有我将 RowCount 分配给 (100) 的随机值.
我做错了什么?
谢谢
您需要子查询的别名,例如:as sub
CREATE OR Replace PROCEDURE schema.MyProcedure()
AS $$
DECLARE
RowCount int = 100;
BEGIN
select cnt into RowCount
from (
Select count(*) as cnt
From schema.MyTable
) as sub ;
RAISE NOTICE 'RowCount: %', RowCount;
END;
$$
LANGUAGE plpgsql;
您还可以将查询结果放在括号中,为任意变量赋值。
CREATE OR REPLACE PROCEDURE schema.my_procedure()
AS
$$
DECLARE
row_count BIGINT;
BEGIN
row_count = (SELECT COUNT(*) FROM schema.my_table);
RAISE NOTICE 'RowCount: %', row_count;
END;
$$ LANGUAGE plpgsql;
您应该使用 BIGINT 而不是 INT。
而且最好用 snake_case 风格编写代码和 table 定义。
我正在尝试将 postgres 存储过程中的查询结果分配给一个变量。 这是我正在尝试的 运行:
CREATE OR Replace PROCEDURE schema.MyProcedure()
AS $$
DECLARE
RowCount int = 100;
BEGIN
select cnt into RowCount
from (
Select count(*) as cnt
From schema.MyTable
) ;
RAISE NOTICE 'RowCount: %', RowCount;
END;
$$
LANGUAGE plpgsql;
schema.MyTable 只是一些任意的 table 名称,但脚本没有显示任何内容,甚至没有我将 RowCount 分配给 (100) 的随机值.
我做错了什么?
谢谢
您需要子查询的别名,例如:as sub
CREATE OR Replace PROCEDURE schema.MyProcedure()
AS $$
DECLARE
RowCount int = 100;
BEGIN
select cnt into RowCount
from (
Select count(*) as cnt
From schema.MyTable
) as sub ;
RAISE NOTICE 'RowCount: %', RowCount;
END;
$$
LANGUAGE plpgsql;
您还可以将查询结果放在括号中,为任意变量赋值。
CREATE OR REPLACE PROCEDURE schema.my_procedure()
AS
$$
DECLARE
row_count BIGINT;
BEGIN
row_count = (SELECT COUNT(*) FROM schema.my_table);
RAISE NOTICE 'RowCount: %', row_count;
END;
$$ LANGUAGE plpgsql;
您应该使用 BIGINT 而不是 INT。
而且最好用 snake_case 风格编写代码和 table 定义。