這是我第一次使用 PostgreSQL 及其最流行的界面 Pgadmin4。我注意到我無法在存盤程序中使用 SELECT 獲取表,但設法使用回傳表的函式來做到這一點。但是,在 MySQL 中,可以使用存盤程序回傳查詢,所以我開始懷疑我是否做錯了什么......
提前致謝。
我在 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')
uj5u.com熱心網友回復:
您可以通過定義SQL 函式來獲得所需的內容。它最終與您的 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;
但是直接不,你不能從存盤程序中得到這個。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/478048.html
標籤:sql 数据库 PostgreSQL 存储过程 pgadmin
