Postgresql数据库比其他数据库更可靠,因为它可以以关系、程序等形式创建和存储数据。Postgresql是一个可定制的数据库,因为我们可以根据自己的要求修改存储容器。Postgresql中的数据是由模式和目录管理的。Postgresql支持多种语言,这意味着我们可以在psql(shell)或pgAdmin端执行任何编程语言的查询。
就像临时表一样,我们也使用其他一些功能来涉及存储容量。这些被称为 "存储程序"。这些程序不像表那样被显示出来。但是,它与表一样默默地工作。
在Postgresql或其他数据库管理系统中,我们使用函数来执行对数据的操作。这些函数是用户创建的或用户定义的。这些函数的一个主要缺点是,我们无法在函数中执行事务。我们不能提交或回滚。这就是我们使用存储过程的原因。通过使用这些存储过程,应用程序的性能得到了提高。此外,我们可以在一个存储过程中使用一个以上的SQL语句。有三种类型的参数。
IN:这是输入参数。它用于将程序中的数据插入到表中。
OUT:是输出参数。它是输出参数。它用于返回值。
INOUT:它同时代表输入和输出参数。因为它们可以传递和返回值。
语法
CREATE OR REPLACE PROCEDURE procedure-name (parameters-list)
LANGUAGE plpgsql
AS $$
DECLARE
(variable names of procedure)
BEGIN
--- SQL statements / logic /condition.
END $$
在你的系统中安装Postgresql。配置成功后,我们现在可以访问数据库了。我们有两个选择来应用查询。一个是psql shell,另一个是pgAdmin dashboard。我们使用pgAdmin来实现这一目的。打开仪表板,现在提供密码以保持与服务器的连接。

存储过程的创建
为了理解存储过程的工作,我们需要使用创建语句来创建一个关系。
>> create table clothes ( id serial, name varchar(100), city varchar(100), color varchar(100), price integer);

通常,我们通过使用 "插入 "语句在表中输入数值,但在这里我们使用一个存储过程,它将作为临时表使用。首先,数据将被存储在其中,然后它们将进一步转移表中的数据。
创建一个名为 "Addclothes "的存储过程。这个存储过程将充当查询和表之间的媒介。因为所有的值都是先插入到这个存储过程中,然后通过插入命令直接插入到表中。
>> Create OR REPLACE PROCEDURE Addclothes (c_ID INOUT INT, C_Name varchar(100),c_city varchar(100),c_color varchar(100),c_price integer)
LANGUAGE plpgsql AS
$$ BEGIN
INSERT INTO clothes (Name, city,color,Price ) Values (c_Name, c_city, c_color, c_price ) RETURNING ID INTO c_ID;
END $$;

现在,存储过程中的值被输入到表衣中。从查询中可以看出,首先,我们定义了存储过程,其属性是数据类型相同但列名略有不同。然后,使用插入语句,将存储过程中的值输入到表中。
就像一个简单的函数,我们使用一个函数调用来发送参数中的值,以便存储过程接受这些值。
>> CALL Addclothes (null, ‘T-shirt’, ‘red’, ‘New York’, 1500);

由于存储过程的名称是 "Addclothes",所以它的写法与我们在插入语句中直接写值的方式相同。输出结果显示为1;由于我们使用了返回方法,这表明有一行被填充。我们将看到通过使用select语句插入的数据。
>> select * from clothes;

重复上述过程,直到你想输入的数值为止。
存储过程和 "UPDATE "子句
现在创建一个过程来更新表 "衣服 "中已经存在的数据。在向存储过程输入数值时,查询的第一部分是一样的。
$$ BEGIN
UPDATE clothes SET Name = c_name, city = c_city, color =c_color, price = c_price WHERE ID = c_ID;
END $$

现在我们将调用这个存储过程。调用的语法是一样的,因为它只使用参数中的值作为参数。

会显示一条信息,表明查询已经成功执行,并注明执行时间。使用select语句获取所有记录,查看被替换的值。

带有 "DELETE "子句的存储过程
我们将在这里使用的下一个存储过程是 "deleteclothes"。这个存储过程将只获取id作为输入,然后用变量来匹配id和表中的id。当找到匹配时,该行将被分别删除。
>> CREATE OR REPLACE PROCEDURE Deleteclothes
(c_ID INT
)
LANGUAGE plpgsql AS
$$ BEGIN
DELETE from clothes WHERE ID =c_Id;
END $$

现在我们将调用这个存储过程。这一次只使用了一个ID。这个ID将定位到要删除的行。
>> call Deleteclothes(2)

ID为 "2 "的行将被从表中删除。
>> select * from clothes;

表中有3条记录。现在你可以看到只剩下两行了,因为id为 "2 "的行已从表中删除。
创建函数
在对存储过程进行了完整的讨论之后,我们现在将考虑如何引入和使用用户定义的函数。
>> CREATE OR REPLACE FUNCTION GetAllclothes() RETURNS clotes
LANGUAGE SQL
AS $$
SELECT * FROM clothes;
$$;

我们创建了一个与存储过程同名的函数。表 "clothes "中的所有数据将显示在结果数据输出部分。这个返回函数在参数中不接受任何参数。通过使用这个函数,我们得到了如上图所示的数据。
另一个函数是用来从特定的ID中获取衣服数据的。在参数中引入了一个整数的变量。这个id将与表中的id进行匹配。在找到匹配的地方,会显示具体的行。
>> CREATE OR REPLACE FUNCTION GetclothesById(c_ID INT) RETURNS clothes
LANGUAGE SQL
AS $$
SELECT * FROM clothes WHERE ID = c_ID;
$$;

作为一个参数,我们将调用具有我们希望从表中获取记录的ID的函数。
>> select * from FerclothesById(3);

因此,从输出结果来看,你可以看到从表 "clothes "中只获取了一条记录。
总结
"Postgresql存储过程示例 "详细介绍了存储过程的创建和操作的例子。函数有一个缺点,被Postgresql的存储过程所消除。阐述了关于程序和函数的例子,这些例子足以让我们获得关于程序的知识。