Postgresql Postgres调用函数/过程,执行查询和;然后删除
我正在寻找一种在Postgresql 12中使用函数或过程的方法,可以用一行代码调用该函数或过程,以便在命令行中使用 1) 执行以参数作为输入的查询 例如:Postgresql Postgres调用函数/过程,执行查询和;然后删除,postgresql,plpgsql,Postgresql,Plpgsql,我正在寻找一种在Postgresql 12中使用函数或过程的方法,可以用一行代码调用该函数或过程,以便在命令行中使用 1) 执行以参数作为输入的查询 例如: 从表1中选择id,其中name=$PARAMETER 2) 根据返回的ID,执行多个删除 例如: delete from table2 where id = $id delete from table3 where id = $id 在SQL Server中,我会使用存储过程来实现这一点,但我不知道如何在PostgreSQL中实现这一点。
从表1中选择id,其中name=$PARAMETER
2) 根据返回的ID,执行多个删除
例如:
delete from table2 where id = $id
delete from table3 where id = $id
在SQL Server中,我会使用存储过程来实现这一点,但我不知道如何在PostgreSQL中实现这一点。如果您的源代码是MS SQL,那么好的开始就是阅读。语言和环境是不同的(可能与你所知道的非常不同) 但您的任务很简单-您可以使用过程(来自Postgres 11)或函数:
CREATE OR REPLACE FUNCTION s(_name text)
RETURNS void AS $$
DECLARE _id int;
BEGIN
SELECT id FROM table1 WHERE name = _name INTO _id;
DELETE FROM table2 WHERE id = _id;
DELETE FROM table2 WHERE id = _id;
END
$$ LANGUAGE plpgsql;
或类似的程序
CREATE OR REPLACE PROCEDURE s(_name text)
AS $$
DECLARE _id int;
BEGIN
SELECT id FROM table1 WHERE name = _name INTO _id;
DELETE FROM table2 WHERE id = _id;
DELETE FROM table2 WHERE id = _id;
END
$$ LANGUAGE plpgsql;
函数通过SELECT s('somename')
过程由语句
calls('somename')执行
Postgres还具有存储过程和函数的概念。如果您可以在SQL Server中编写它们,那么适应plpgsql语法应该不会有太大问题。@steiner:这是完全错误的。这与sql server完全不同。我不是说语法完全相同。我是说,通过一些研究和阅读,你应该能够适应它。