如何将此SP /函数从MySQL转换为PostgreSQL?
DELIMITER $$
CREATE DEFINER=`user_name`@`%` PROCEDURE `sp_TABLE_name`(
pTransType int,
pId bigint,
pName varchar(250),
pStartFrom datetime,
pStartTo datetime,
pSignature longblob)
BEGIN
if pTransType = 1 then
insert into TABLE_name (Id, Name, startfrom, startto, signature)
values(pId, pName, pStartFrom, pStartTo, pSignature);
end if;
if pTransType = 2 then
update TABLE_name set
Name = pName,
startfrom = pStartFrom,
startto = pStartTo,
signature = pSignature
where Id = pId;
end if;
if pTransType = 3 then
delete from TABLE_name where id = pId;
end if;
END$$
DELIMITER ;
我在声明时尝试了Case,但其他错误显示.. 还有其他办法吗?
答案 0 :(得分:1)
我认为它看起来像这样:
CREATE OR REPLACE FUNCTION sp_TABLE_name(pTransType int, pId bigint, pName varchar(250),
pStartFrom timestamp, pStartTo timestamp, pSignature bytea)
RETURNS void AS
$BODY$
BEGIN
if pTransType = 1 then
insert into TABLE_name (Id, Name, startfrom, startto, signature)
values(pId, pName, pStartFrom, pStartTo, pSignature);
elsif pTransType = 2 then
update TABLE_name set
Name = pName,
startfrom = pStartFrom,
startto = pStartTo,
signature = pSignature
where Id = pId;
elsif pTransType = 3 then
delete from TABLE_name where id = pId;
end if;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
注意我必须使你的数据类型符合PostgreSQL等价物(或者我最好猜测它们是什么)。