是否可以使用存储过程检索表?
Is it possible to retrieve tables with stored procedures?
这是我第一次使用 PostgreSQL 及其最受欢迎的界面 Pgadmin4。我注意到我无法在存储过程中使用 SELECT 获取 tables,但设法使用 returns 和 table 的函数来实现。但是,在 MySQL 中可以使用存储过程 return 查询,所以我开始怀疑我是否做错了什么...
提前致谢。
我在Mysql中使用的代码:
DELIMITER //
create procedure listar_ordenes_cat(in cat_name varchar(50))
begin
select o.ordenid
from ordenes o
inner join detalle_ordenes d
on o.ordenid = d.ordenid
inner join productos pr
on pr.productoid = d.productoid
inner join categorias ca
on ca.categoriaid = pr.categoriaid
where ca.nombrecat = upper(cat_name);
end//
DELIMITER ;
call listar_ordenes_cat('Lacteos')
我必须在 Postgres 中使用的脚本:
create or replace function listar_ordenes_cat(in cat_name varchar(50))
returns table (ordenid int) as $$
begin
return query
select o.ordenid
from ordenes o
inner join detalle_ordenes d
on o.ordenid = d.ordenid
inner join productos pr
on pr.productoid = d.productoid
inner join categorias ca
on ca.categoriaid = pr.categoriaid
where ca.nombrecat = upper(cat_name);
end;
$$ language plpgsql
select * from listar_ordenes_cat('Lacteos')
您可以通过定义 SQL function 来获得您想要的内容。它最终与您的 MySql.
基本相同
create or replace function listar_ordenes_cat(in cat_name)
returns table (ordenid int)
as $$
select o.ordenid
from ordenes o
inner join detalle_ordenes d on o.ordenid = d.ordenid
inner join productos pr on pr.productoid = d.productoid
inner join categorias ca on ca.categoriaid = pr.categoriaid
where ca.nombrecat = upper(cat_name);
$$ language sql;
但是直接不行,你不能从存储过程中得到它。
这是我第一次使用 PostgreSQL 及其最受欢迎的界面 Pgadmin4。我注意到我无法在存储过程中使用 SELECT 获取 tables,但设法使用 returns 和 table 的函数来实现。但是,在 MySQL 中可以使用存储过程 return 查询,所以我开始怀疑我是否做错了什么...
提前致谢。
我在Mysql中使用的代码:
DELIMITER //
create procedure listar_ordenes_cat(in cat_name varchar(50))
begin
select o.ordenid
from ordenes o
inner join detalle_ordenes d
on o.ordenid = d.ordenid
inner join productos pr
on pr.productoid = d.productoid
inner join categorias ca
on ca.categoriaid = pr.categoriaid
where ca.nombrecat = upper(cat_name);
end//
DELIMITER ;
call listar_ordenes_cat('Lacteos')
我必须在 Postgres 中使用的脚本:
create or replace function listar_ordenes_cat(in cat_name varchar(50))
returns table (ordenid int) as $$
begin
return query
select o.ordenid
from ordenes o
inner join detalle_ordenes d
on o.ordenid = d.ordenid
inner join productos pr
on pr.productoid = d.productoid
inner join categorias ca
on ca.categoriaid = pr.categoriaid
where ca.nombrecat = upper(cat_name);
end;
$$ language plpgsql
select * from listar_ordenes_cat('Lacteos')
您可以通过定义 SQL function 来获得您想要的内容。它最终与您的 MySql.
基本相同create or replace function listar_ordenes_cat(in cat_name)
returns table (ordenid int)
as $$
select o.ordenid
from ordenes o
inner join detalle_ordenes d on o.ordenid = d.ordenid
inner join productos pr on pr.productoid = d.productoid
inner join categorias ca on ca.categoriaid = pr.categoriaid
where ca.nombrecat = upper(cat_name);
$$ language sql;
但是直接不行,你不能从存储过程中得到它。